在Supervisord中激活virtualenv

时间:2012-05-29 00:34:09

标签: celery django-celery supervisord

有点背景知识。我正在使用Supervisor来监控django-celery流程。我需要能够设置virutalenv然后启动芹菜过程。

我目前正在进行的方式是,在supervisor.conf文件中我有

[program:celery]  
command = /srv/worker.sh

stdout_logfile = /srv/supervisor.log
stderr_logfile = /srv/supervisor.log

然后在worker.sh我有

/bin/su - username -c "source /srv/virtualenvs/bin/activate; python /srv/manage.py celeryd

这是有效的。问题是,当我supervisorctl stop celery与主管一起时,它不会杀死工人。他们仍然存在。我想如果我能够在supervisor中激活virtualenv,一切都会比放入shell脚本更好。

1 个答案:

答案 0 :(得分:1)

TERM信号被发送到shell脚本而不是celeryd。要么不使用它(因为你可以从supervisord conf设置用户)或使用exec。

无论如何,最好的做法是(如果你不关心失去一些任务):short stopwaitsecs和killasgroup = true。

例如:

[program:celery]
command=celeeryd blablabla
user=username 
stopwaitsecs=10
killasgroup=true