【发布时间】:2016-09-29 03:06:02
【问题描述】:
我想每半小时做一次工作。我的应用程序基于 Flask,并在 Windows 上运行。
现在我使用 Windows 调度程序服务为该作业创建一个任务。
我想知道是否有另一种方法可以使用 Flask 的内置函数来执行循环任务...
对不起,我的英语不好。
【问题讨论】:
标签: python flask scheduled-tasks
我想每半小时做一次工作。我的应用程序基于 Flask,并在 Windows 上运行。
现在我使用 Windows 调度程序服务为该作业创建一个任务。
我想知道是否有另一种方法可以使用 Flask 的内置函数来执行循环任务...
对不起,我的英语不好。
【问题讨论】:
标签: python flask scheduled-tasks
我想知道是否有另一种方法可以使用 Flask 的内置函数来执行 [周期性] 任务。
作为一个极简主义的微框架,我认为 Flask 没有或永远不会有内置功能来安排定期任务。
习惯的方式是你已经做过的,你写一些可以被称为HTTP端点或script的Flask代码,然后使用OS调度工具来执行它(例如Windows Task Scheduler或cron在 UNIX/Linux 上)
否则,Flask 可以很好地与其他专门处理此问题的库配合使用,例如 Celery (periodic tasks),它负责处理这些细节并添加一些其他情况下可能无法使用的功能。
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
'every-half-hour': {
'task': 'tasks.your_task',
'schedule': timedelta(minutes=30),
'args': ('task_arg1', 'task_arg2')
},
}
CELERY_TIMEZONE = 'UTC'
【讨论】:
我不确定这是否有帮助,但我一直在测试 schedule 模块,它易于使用且运行良好:
$pip install schedule
这是来自official documentation的示例:
import schedule
import time
def job():
print("I'm working...")
schedule.every(30).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
希望这个帮助 =)
【讨论】: