Python 如何使用芹菜计划在特定时间执行任务?
我已经研究过PeriodicTask,但这些示例只涉及如何让它再次出现。我在寻找更像cron的功能,即每周一凌晨1点执行此任务。使用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版现在支持这一点,多亏了
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,我只需要第一次计划它,对吗?导入路径已更改为from芹菜.task import periodic_task和from芹菜.schedules import crontab