Python 如何使用芹菜计划在特定时间执行任务?

Python 如何使用芹菜计划在特定时间执行任务?,python,django,scheduled-tasks,celery,Python,Django,Scheduled Tasks,Celery,我已经研究了PeriodicTask,但这些示例只涉及如何让它再次出现。我在寻找更像是cron说“每周一凌晨1点执行此任务”的能力。使用 YourTask.apply_async(args=[some, args, here], eta=when) 在任务结束时,将其重新安排到下一次应该运行的时间。如何阅读这篇文章,您可以制作一个周期任务,我想如果您在凌晨1点执行任务。周一早上是因为您想运行一个长时间的cpu/mem操作,请记住芹菜使用ampq排队任务。最近发布的1.0.3版现在支持这一点,多

我已经研究了
PeriodicTask
,但这些示例只涉及如何让它再次出现。我在寻找更像是
cron
说“每周一凌晨1点执行此任务”的能力。

使用

YourTask.apply_async(args=[some, args, here], eta=when)

在任务结束时,将其重新安排到下一次应该运行的时间。

如何阅读这篇文章,您可以制作一个周期任务,我想如果您在凌晨1点执行任务。周一早上是因为您想运行一个长时间的cpu/mem操作,请记住芹菜使用ampq排队任务。

最近发布的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.")
有关更多信息,请参阅变更日志:


我刚刚提交了一个补丁,添加了一个ScheduledTask,以完成一点基于时间的调度,而不是基于时段的调度:


尽管@asksol的答案仍然有效,但api已经更新。对于芹菜4.1.0,我必须导入
crontab
定期任务
,如下所示:

from celery.schedules import crontab
from celery.task import periodic_task

别忘了eta是python的日期时间,如果我将它设为
PeriodicTask
,我只需要安排第一次,对吗?导入路径已从芹菜更改为
。任务导入periodic_任务
从芹菜。计划导入crontab