2017-01-10 13 views
0

ワーカーが動作しているサーバーが停止した場合、セロリジョブを再試行する方法はありますか?私はジョブを実行するサブプロセスを意味するのではなく、サーバー全体が利用できなくなるということです。セロリの労働者が死ぬと、仕事は再試行されますか?

私はブローカーとしてRabbitMQとRedisを試しました。どちらの場合も、現在ジョブが処理されている場合、ジョブは完全に忘れられています。ワーカーが再起動すると、ジョブを再処理しようとしても、RabbitやRedisを見てもキューは空です。結果のバックエンドも空です。

従業員がメッセージを取得して、サブプロセスが失敗した場合にそれを戻すと思われますが、ワーカーも死んでも戻すことはできません。

は(はい、私はこれは年に一回以上起こる環境で動作し、私は仕事を失いたくない)

答えて

0

理論的には、トリックを行う必要がありますtask_acks_late=Trueを設定します。 (doc

Redisブローカでは、タスクはvisibility_timeoutの後に再配信されます。デフォルトは1時間です。 (doc

RabbitMQでは、Rabbitが作業者が死亡したことがわかるとすぐにタスクが再配信されます。

+0

また、毒の丸薬は引き続き服用されることになりますが、これは止まらないことに注意してください。 –

関連する問題