使用supervisor运行celeryd_multi

7

我正在使用djcelery和supervisor进行工作。 我曾经通过supervisor运行celery,一切都很顺利,但是当我意识到需要将其更改为多任务模式时,所有东西都崩溃了。 如果我在终端中运行celeryd_multi,它可以正常工作,但始终在后台运行。像supervisor这样的命令需要在前台运行,这就是问题所在。

这是我的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
2个回答

7

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

我不知道有没有简单的解决方案来使用supervisor启动多个celeryd实例,但是您可以为每个实例使用一个配置。也许其他人有此问题的解决方案。

generic-init.d / celeryd脚本使用celeryd-multi启动多个服务器,并且您可以使用CELERYD_NODES / etc / init.d / celeryd变量设置数量或工作程序名称列表。 我不确定如何使supervisord能够与celeryd-multi配合工作,因为它可能需要知道应该监视哪些结果PID或不监视哪些(也许可以编写supervisord插件?)

- Ask Solem


0

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

pidsig据说类似,但代理信号:

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

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

我相信这两个基本上都是等待后台子进程的包装器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接