我想優雅地退出芹菜任務(即不通過調用revoke(celery_task_id, terminate=True)
)。我以爲我會向設置標誌的任務發送消息,以便任務函數可以返回。與任務溝通的最佳方式是什麼?停止芹菜任務優雅
Q
停止芹菜任務優雅
3
A
回答
5
使用信號這一點。芹菜的revoke
是的正確選擇;它默認使用SIGTERM,但如果您願意,您可以使用signal
參數specify another。
只是爲其設置一個信號處理程序在任務(使用signal
module)是正常終止任務。你
6
還可以使用AbortableTask
。我認爲這是優雅地停止任務 的最佳途徑。
http://docs.celeryproject.org/en/latest/reference/celery.contrib.abortable.html
from celery.contrib.abortable import AbortableTask
from proj.celery import app
@app.task(bind=True, base=AbortableTask)
def abortable_task(self):
while not self.is_aborted():
print 'I am running'
print 'I was aborted!'
如果您保存ID任務的地方,只要你願意,你可以調用它。
from celery.contrib.abortable import AbortableAsyncResult
abortable_task = AbortableAsyncResult(task_id)
abortable_task.abort()
相關問題
- 1. 使芹菜停止消費任務
- 2. 芹菜任務優先級
- 3. 優雅中止rake任務
- 4. 芹菜任務
- 5. 芹菜任務
- 6. 單一芹菜任務暫停所有其他芹菜工
- 7. 芹菜工人的優雅關機
- 8. docker-compose和優雅的芹菜關機
- 9. 優雅地停在碼頭集裝箱的芹菜
- 10. 如何在芹菜中添加新任務而不停止芹菜實例在django芹菜?
- 11. 芹菜:連接錯誤中止任務
- 12. 終止當前的芹菜任務
- 13. 芹菜鏈任務
- 14. 推芹菜任務
- 15. 芹菜如何停止任務的發展與開拓機器
- 16. 芹菜節拍任務在幾秒後停止失敗(opencv)
- 17. 停止線程,直到芹菜任務完成
- 18. 停止芹菜的問題
- 19. 優雅地停止NSXMLParser?
- 20. 優雅地停止線程
- 21. 任務中的芹菜任務
- 22. 芹菜任務instanciation緩存
- 23. Django芹菜任務記錄
- 24. 芹菜任務更新
- 25. Heroku芹菜背景任務
- 26. 芹菜任務鏈取消?
- 27. unittest芹菜任務assertRaises
- 28. 子類化芹菜任務
- 29. 芹菜任務消失
- 30. 去抖芹菜任務?
是否可以捕捉任意信號並執行一些清理操作?另外,信號平臺是獨立的嗎? – orange 2013-05-12 10:20:24
Python的'signal'模塊文件在不同的平臺,不同的是在Windows上支持的唯一信號是SIGABRT,SIGFPE,SIGILL,SIGINT,SIGSEGV,或SIGTERM,所以你應該堅持的。所有這些都可以被捕獲。無論何時發現任何信號都會被觸發,將無法設置處理程序,如果這就是您要求的。 – Cairnarvon 2013-05-12 10:30:47
我終於實現了這一點,它可以在OSX和Linux上正常工作。但是,在Windows(8)上,我似乎無法捕捉到信號。我嘗試過SIGABRT和SIGTERM,但沒有一個被抓到。我在'@ task'註釋的函數中安裝了監聽器。還有什麼,我需要做什麼? – orange 2013-06-10 23:57:21