我有以下途径,在POST请求时执行特定任务&;将计数增加1
@blueprint.route("Calendar", methods=['GET', 'POST'])
def Calendar():
count +=1
email = request.json.get('email')
therestart(email)
return email
我希望每个用户每24小时重置一次计数,因此我想到的最好方法是执行后台调度程序:
import atexit
from apscheduler.schedulers.background import BackgroundScheduler
def therestart(email):
if email:
user = User.query.filter_by(email=email).first()
user.count = 0
return 'no email'
scheduler = BackgroundScheduler()
scheduler.add_job(func=therestart, trigger="interval", seconds=200) #change to 86400 sec in prod
scheduler.start()
这会产生一个错误:
ValueError: The following arguments have not been supplied: email
这是有道理的,但同时,如果我把它改成这样:
def therestart(email):
if email:
scheduler()
def scheduler()
scheduler = BackgroundScheduler()
scheduler.add_job(func=therestart, trigger="interval", seconds=3)
scheduler.start()
然后,每当电子邮件被传递或激活时,scheduler()
就会执行违背我目标的操作
如果有人能把我从困境中解救出来,我将不胜感激
您需要在目标函数中为email参数传递一个值。因此,您需要使用args或kwargs来实现这一点。因此,您可以这样做:
我最后做了:
相关问题 更多 >
编程相关推荐