簡體   English   中英

如何在部署到Heroku時中止Celery任務

[英]How to Abort Celery Task upon deploy to Heroku

當我的新版django應用程序部署到heroku時,工作人員被迫重新啟動。 我有一些長期運行的任務,應該在被殺之前進行一些清理。

我已經嘗試注冊一個似乎不會被調用的worker_shutdown鈎子。

我還嘗試了Notify celery task of worker shutdown中的答案,但我不清楚如何在此上下文中中止給定任務,因為調用celery.task.control.active()會拋出異常(celery不再運行)。

謝謝你的幫助。

如果您控制部署,也許您可​​以運行一個腳本,將Control.broadcast執行到您可以預先注冊的自定義命令,並且只有在收到所需的回復后(您必須實現該邏輯),您才能繼續部署(或者引發TimeoutException)?

此外,芹菜已經有一個預定義的關閉命令 ,我猜你可能會在你的實例或工人的子類中重載。 命令具有傳遞Panel實例的優點,該實例允許您訪問使用者 這應該會在那里暴露很多控制權......

暫無
暫無

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

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