我调查了PeriodicTask
,但这些例子只涵盖了重复发生。我正在寻找更像cron
能够说“每周一凌晨1点执行此任务”的内容。
答案 0 :(得分:28)
最近发布的版本1.0.3现在支持这一点,感谢Patrick Altman!
示例:
from celery.task.schedules import crontab
from celery.decorators import periodic_task
@periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon"))
def every_monday_morning():
print("This runs every Monday morning at 7:30a.m.")
有关详细信息,请参阅更改日志:
答案 1 :(得分:27)
使用
YourTask.apply_async(args=[some, args, here], eta=when)
在任务结束时,将其重新安排到下次运行时。
答案 2 :(得分:5)
我刚刚提交了一个补丁来添加一个ScheduledTask,以完成一小部分基于时间的调度,而不是基于时间段:
https://github.com/celery/celery/commit/e8835f1052bb45a73f9404005c666f2d2b9a9228
答案 3 :(得分:0)
如何阅读这个tutorial,你可以制作一个PeriodicTask,我想如果你已经在1 .am执行了一项任务。星期一早上是因为你想要运行一个长期的cpu / mem操作,记住芹菜使用ampq进行入队任务。
答案 4 :(得分:0)
虽然@asksol的答案仍然有效,但api已经更新。对于芹菜4.1.0,我必须导入crontab
和periodic_task
,如下所示:
from celery.schedules import crontab
from celery.task import periodic_task