7

我正在与 djcelery 和主管合作。我和主管一起经营芹菜,一切正常,一旦我意识到我需要把它换成芹菜多,一切都破裂了。如果我在终端中运行 celeryd_multi 它可以工作但总是在后台运行,就像主管需要命令在问题所在的前台运行。

这是我的celery.ini

[program:celery_{{ division }}]
command = {{ virtualenv_bin_dir }}/python manage.py celeryd_multi start default mailchimp -c:mailchimp 3 -c:default 5 --loglevel=info --logfile={{ log_dir }}/celery/%n.log --pidfile={{ run_dir }}/celery/%n.pid --schedule=/home/celery/celerybeat-schedule --settings={{ django_settings_python_path }}
autorestart = false
autostart = false
directory = {{ repo_dir }}/{{ division }}
user=celery
numprocs = 1
redirect_stderr = True
stopwaitsecs = 10
startsecs = 10
priority = 997
startretries = 3

这是我在终端中输入的命令,效果很好

python manage.py celeryd_multi start default mailchimp -c:mailchimp 3 -c:default 5 --loglevel=info --logfile=/var/log/celery/%n.log --pidfile=/var/log/celery/%n.pid --schedule=/home/celery/celerybeat-schedule --settings=lively.settings_gunicorn

4

2 回答 2

7

celery 主要开发者的回复(2012 年 3 月 23 日):

我不知道使用主管启动多个 celeryd 实例的任何简单解决方案,但您始终可以为每个实例使用一个配置。也许其他人对此有解决方案。

generic-init.d/celeryd 脚本使用 celeryd-multi 来启动多个服务器,您可以使用 CELERYD_NODES /etc/init.d/celeryd 变量来设置一个数字,或者一个worker名称列表。我不确定如何让supervisord与celeryd-multi一起使用,因为它可能需要知道哪些结果PID应该被监控(也许可以编写一个supervisord插件?)

——问索伦

于 2013-04-02T15:40:00.857 回答
0

Daemontools 有一个名为 fghack 的实用程序,旨在使后台进程“停留”在前台。

pidsig 应该是相似的,但代理信号:

http://permalink.gmane.org/gmane.comp.sysutils.supervision.general/2010

https://github.com/chexum/pidsig/blob/master/pidsig.c

我相信两者基本上都是等待有背景的孩子的包装器。

于 2013-06-27T16:26:28.787 回答