对于一点背景。我正在使用 Supervisor 来监控 django-celery 进程。我需要能够设置virutalenv,然后启动celeryd 进程。
我目前正在这样做的方式是,在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
与主管合作时,它不会杀死工人。他们仍然存在。我在想,如果我能够在主管中激活 virtualenv,一切都会比放入 shell 脚本更好。