6

celerydをデーモンとして実行していますが、正常に停止できない場合があります。TERMシグナルを送信し、キューにアイテムがある場合(この場合service celeryd stop)、celerydは新しいジョブの取得を停止し、すべてのワーカープロセスをシャットダウンします。ただし、親プロセスはシャットダウンしません。

AとBの2つの別々のワーカーマシンでcelerydを実行しているシナリオに遭遇しました。RabbitMQサーバーに約1000のメッセージがあり、Aをシャットダウンして、上記で説明した状況を経験しました。Bは引き続き機能しましたが、サーバーに約40のメッセージが残ったまま停止しました。しかし、Bを正しく止めることができました。

Bを再起動して、40個のアイテムがキューから削除されるかどうかを確認しましたが、そうではありませんでした。次に、私はAを激しく殺し、その後Bはタスクをつかんで完了しました。

私の結論は、親プロセスがその子のためにRabbitMQサーバーから40個のアイテムを予約したということです。子を正しく刈り取りますが、手動で強制終了しない限り、アイテムをRabbitMQに解放しません。

誰かが似たようなことを経験したことがありますか?

Celery2.2.2を実行しています

4

1 に答える 1

3

これは次のことに関連していると思います。

https://github.com/celery/celery/issues/264

設定

CELERY_DISABLE_RATE_LIMITS = False

あなたの settings.py ファイルで動作するはずです。

于 2011-03-23T16:51:17.263 に答える