1
假設有一個週期性任務計劃每小時運行一次。工作人員接收任務並開始處理。當任務正在處理時,celeryd進程(通過supervisord進行控制)重新啓動(supervisorctl全部重新啓動)。即使該任務從未完成執行,它也不會被重新執行。如何在芹菜中終止週期性任務?
如何立即重新排列週期性任務並防止多個版本的任務同時運行?
假設有一個週期性任務計劃每小時運行一次。工作人員接收任務並開始處理。當任務正在處理時,celeryd進程(通過supervisord進行控制)重新啓動(supervisorctl全部重新啓動)。即使該任務從未完成執行,它也不會被重新執行。如何在芹菜中終止週期性任務?
如何立即重新排列週期性任務並防止多個版本的任務同時運行?
有可能是做一個更好的方式,但你可以只使用週期任務隊列中創建一個常規的任務(例如,my_actual_task.defer(…)
),這將直到它完成不從隊列中刪除(假設你正在使用acks_late)。
如果您不使用acks_late,可以嘗試放置大量任務,並在相應finally
處放置一個my_actual_task.retry()
。
無論哪種方式,你通常應該避免殺死工人,而不要讓他們有機會完成他們正在做的事情。