編集: 同じ Redis URL に接続された kombu* を使用するメッセージ コンシューマーは、確認応答されていないメッセージを復元するのに役立つため、それらすべてが同じvisibility_timeout
値で構成されていることを確認する必要があります。
よくある間違いは、Flower モニターを次のように開始することです。
celery flower -b redis://somewhere
このような代わりに:
celery -A proj flower
前者は、花のインスタンスがセロリ構成で構成されずBROKER_TRANSPORT_OPTIONS
、visibility_timeout
設定が欠落していることを意味します。
これに加えて、以下の元の返信で説明されているように、壁の時計が ntp を使用して同期していることも確認する必要があります。
- kombu は、Celery が使用するメッセージング ライブラリです。
元の返信:
このようなことは聞いたことがありませんが、バグである可能性があります。kombu/transport/redis.py
visibility_timeout が正しく設定されているかどうかを確認するためにいくつかの print ステートメントを追加しました。ただし、1 時間以上の値で動作することをテストするには、さらに時間がかかります (正確には約 2 時間)。
それまでの間、print ステートメントを自分で追加することで (たとえば、redis トランスポートの restore_visible メソッドに)、visiblity_timeout を正しく設定していることを確認できます。
この機能はタイムスタンプを使用しているため、複数のマシンを使用している場合は、クロックがほぼ同期していることが重要です (特に、数時間ずれることがないようにしてください)。ネットワーク サーバーでは常に ntp を使用し、定期的に同期する必要があります。