如何使用芹菜安排在特定时间执行任务?

Han*_*Gay 16 python django scheduled-tasks celery

我已经研究过PeriodicTask,但这些例子只是让它重复出现.我正在寻找更能cron说"每周一凌晨1点执行此任务"的能力

nos*_*klo 28

使用

YourTask.apply_async(args=[some, args, here], eta=when)
Run Code Online (Sandbox Code Playgroud)

在任务结束时,将其重新安排到下次运行时.

  • 别忘了eta是一个python的日期时间, (2认同)

ask*_*sol 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.")
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅更改日志:

http://celeryproject.org/docs/changelog.html

  • 他们删除了装饰者https://github.com/celery/celery/issues/1764 (5认同)
  • 导入路径已更改为`from celery.task import period_task` 和`from celery.schedules import crontab` (2认同)

Pat*_*man 5

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

https://github.com/celery/celery/commit/e8835f1052bb45a73f9404005c666f2d2b9a9228