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

セロリの主な開発者からの返信(2012 年 3 月 23 日):

スーパーバイザーを使用して複数の celeryd インスタンスを開始する簡単な解決策は知りませんが、それぞれに 1 つの構成をいつでも使用できます。たぶん、他の誰かがそれに対する解決策を持っています。

generic-init.d/celeryd スクリプトは celeryd-multi を使用して複数のサーバーを起動し、 CELERYD_NODES /etc/init.d/celeryd 変数を使用して数値またはワーカー名のリストを設定できます。おそらく、結果のPIDのどれを監視する必要があるかどうかを知る必要があるため、supervisordをceleryd-multiと連携させる方法はわかりません(おそらく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 に答える