我以一種不尋常的方式使用芹菜 - 我在芹菜啓動時創建自定義過程,這個過程在芹菜運行時應始終運行。 芹菜工人使用這個過程來完成他們的任務(細節不需要)。「celeryd stop」不起作用
我運行命令行芹菜,一切都OK:
celery -A celery_jobs.tasks.app worker -B --loglevel=warning
但是當我使用celeryd
來守護進程芹菜,沒有辦法阻止它。 命令celeryd stop
試圖阻止芹菜,但永遠不會結束。
當我在兩種情況下都檢查進程樹時,有一個區別 - 從命令行運行時,父進程明顯是芹菜進程(將芹菜工作者視爲子進程的主進程)。殺死(停止)父芹菜過程將停止所有芹菜工和我的定製過程。
但隨着celeryd
運行的時候,我的自定義過程有家長/sbin/init
- 並調用celeryd stop
不工作 - 好像主芹菜進程正在等待的東西,或者是無法阻止我自定義的過程,因爲它是不芹菜子進程。
我對流程瞭解不多,而且找到信息並不容易,因爲我不知道應該搜索什麼內容,所以有必要提供任何提示。
我接受這個答案,因爲我認爲這個解決方案更清潔。 – misoK