[英]How can I schedule a Task to execute at a specific time using celery?
我研究了PeriodicTask
,但示例僅涵蓋使其重復發生。 我正在尋找更像是cron
說“每周一凌晨 1 點執行此任務”的能力
用
YourTask.apply_async(args=[some, args, here], eta=when)
在您的任務結束時,將其重新安排到下一次應該運行的時間。
最近發布的 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 來完成一小部分基於時間的調度與基於周期的調度:
https://github.com/celery/celery/commit/e8835f1052bb45a73f9404005c666f2d2b9a9228
雖然@asksol 的答案仍然成立,但 api 已更新。 對於 celery 4.1.0,我必須按如下方式導入crontab
和periodic_task
:
from celery.schedules import crontab
from celery.task import periodic_task
如何閱讀本教程,您可以創建一個 PeriodicTask,我想如果您在凌晨 1 點執行任務。 星期一的早上是因為您要運行長時間的 cpu/mem 操作,請記住 celery 使用 ampq 進行排隊任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.