我正在与dj芹菜和主管合作。我和主管一起运行芹菜,一切都很好,一旦我意识到我需要把它改成芹菜多,一切都破裂了。如果我在终端中运行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
芹菜主开发者回复(2012年3月23日):
我不知道有什么简单的解决方案来启动多个celeryd实例使用supervisor,但您总是可以为每个配置使用一个配置。也许有人Else有一个解决方案。
generic-init。D/celeryd脚本使用celeryd-multi启动多个服务器。你可以使用CELERYD_NODES/etc/init.D/celeryd变量设置一个数字,或者工人名称的列表。我不确定怎样才能使superord与celeryd-multi一起工作可能需要知道产生的pid中哪些应该监视,哪些不应该监视(可能是监督)可以写插件吗?)
—Ask Solem
Daemontools有一个名为fghack的实用程序,旨在使后台进程"留在"前台。
pidsig应该是类似的,但代理信号:
http://permalink.gmane.org/gmane.comp.sysutils.supervision.general/2010
https://github.com/chexum/pidsig/blob/master/pidsig.c
我相信它们基本上都是等待后台子元素的包装器。