Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用芹菜计划在特定时间执行任务?_Python_Django_Scheduled Tasks_Celery - Fatal编程技术网

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,我只需要第一次计划它,对吗?导入路径已更改为from芹菜.task import periodic_task和from芹菜.schedules import crontab