6

セロリデーモンが非常に不安定であるという問題があります。ファブリック デプロイ スクリプトを使用して、変更をプッシュするたびにデーモンを再起動しますが、何らかの理由でこれが大きな問題を引き起こしています。

デプロイ スクリプトが実行されるたびに、セロリ プロセスは疑似デッド状態のままになります。(残念ながら) これらは引き続き rabbitmq からのタスクを消費しますが、実際には何もしません。紛らわしいことに、簡単な検査では、この状態ではすべてが「正常」であるように見えます。celeryctl ステータスは、1 つのノードがオンラインで、ps aux | grep celery は、2 つの実行中のプロセスを示しています。

ただし、/etc/init.d/celeryd stop を手動で実行しようとすると、次のエラーが発生します。

start-stop-daemon: warning: failed to kill 30360: No such process

この状態で celeryd start を実行しようとすると、正しく動作しているように見えますが、実際には何もしません。この問題を解決する唯一の方法は、実行中のセロリ プロセスを手動で強制終了してから、再度開始することです。

ここで何が起こっているのですか?また、完全な確認はできていませんが、問題は数日後に発生すると考えられます (これは現在テスト サーバーであり、アクティビティはありません)。

4

1 に答える 1

5

セットアップの何が問題なのかはわかりませんが、私は常に Supervisord を使用してセロリを実行してきました。とにかく、スーパーバイザー上で実行されているセロリでこれを経験したことはありません。

参考までに、セロリのスーパーバイザー構成の例を次に示します。

[program:celeryd]
directory=/path/to/project/
command=/path/to/project/venv/bin/python manage.py celeryd -l INFO
user=nobody
autostart=true
autorestart=true
startsecs=10
numprocs=1
stdout_logfile=/var/log/sites/foo/celeryd_stdout.log
stderr_logfile=/var/log/sites/foo/celeryd_stderr.log

; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600

私の fab スクリプトで celeryd を再起動するのは、sudo supervisorctl restart celeryd.

于 2011-08-01T06:54:43.543 に答える