簡體   English   中英

如何使用 celery 安排任務在特定時間執行?

[英]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.")

有關更多信息,請參閱變更日志:

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

我剛剛提交了一個補丁來添加一個 ScheduledTask 來完成一小部分基於時間的調度與基於周期的調度:

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

雖然@asksol 的答案仍然成立,但 api 已更新。 對於 celery 4.1.0,我必須按如下方式導入crontabperiodic_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM