2017-10-18 139 views
2

我使用supervisord運行芹菜生產。我的主管配置如下。如何重新啓動芹菜Wroker由Supervisord運行

[program:celeryd] 
command=%(ENV_PROJECT_PATH)s/scripts/celery_worker.sh 
stdout_logfile=%(ENV_PROJECT_PATH)s/celeryd.log 
stderr_logfile=%(ENV_PROJECT_PATH)s/celeryd.log 
autostart=true 
autorestart=true 
startsecs=10 
stopwaitsecs=1000 
priority=1000 

我的命令來運行芹菜工人

celery_path=$(which celery) 
$celery_path -A Project_Name worker --loglevel=info 

我想問一下,怎樣重啓芹菜當工人在生產中我的代碼庫的變化?

+0

'supervisorctl restart celeryd'有什麼問題? –

+0

我用'supervisorctl restart celeryd',但多次使用後,服務器速度變慢。當我檢查公羊時,大部分公羊都被芹菜工人佔用。有近15名工人在後臺工作。 –

+2

我有同樣的問題。 supervisord腳本中的參數'killasgroup = true'爲我解決了它。 –

回答

1

主要的問題我遇到的是,如果你告訴上司killasgroup這將導致數據丟失長時間運行的任務可能會被殺掉。

我已經開始使用的解決方案是告訴TERM的主進程,它會在工作完成後終止工作。所有工作人員完成後,主管將重新啓動主流程。

ps aux | grep celery.*MainProcess | awk '{print $2}' | xargs kill -TERM 

這也是相關的。 Celery Production Graceful Restart

0

在主管文件中添加以下內容並重新啓動主管。

killasgroup =真