簡體   English   中英

如何創建在啟動Django應用程序后無限期運行的單例芹菜任務?

[英]How do you create a singleton celery task that runs indefinitely upon starting a Django application?

現在,我有一個@sharedtask ,它完全遵循以下代碼: http : @sharedtask

以及以下調度程序設置:

CELERYBEAT_SCHEDULE = {
    'indefinite-task': {
        'task': 'app.tasks.indefinite_task',
        'schedule': timedelta(seconds=1),
    },
}

但是我的兩個工人似乎多次運行任務,大概是因為一個工人有並發線程? 如何確保任務僅在單個工作線程上由單個線程運行一次?

我在shell中看到的示例:

11:00:43 worker.1 | [2015-05-05 15:00:43,444: DEBUG/Worker-1] app.tasks.indefinite_task[b8b0445c-91e6-4652-bd75-4c609149161f]: Acquiring lock
11:00:43 worker.1 | [2015-05-05 15:00:43,444: DEBUG/Worker-2] app.tasks.indefinite_task[b8b0445c-91e6-4652-bd75-4c609149161f]: Acquiring lock

編輯:我正在與heroku使用Procfile

也許您想在自己的工作進程中運行python腳本。

例如:

worker: python indefinite_task.py

這樣可以確保僅對該工人運行一項任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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