2017-02-13 2 views
5

セロリのプリフェッチされたタスクは承認されていますか?私はセットアップ以下のいる

  • RabbitMQのブローカー+ジャンゴCELERYD_PREFETCH_MULTIPLIERと
  • セロリ= 32
  • CELERY_ACKS_LATE(Iは、このように彼らは、パフォーマンスの観点から、多くの意味を作るプリフェッチ小さなタスク をたくさん持っています) = False(タスクは等冪ではありません)

私はドッカーコンテナでセロリを実行します。したがって、ドッカーを再構築するときに、セロリの労働者は正常にシャットダウンされません。これは、労働者が新しいドッカーコンテナで再び稼働した後に仲介業者がそれらを送付したときにタスクが承認されない場合は問題ありませんが、それ以外の場合は失われます。

花管理パネルでは、プリフェッチされたタスクのステータスが受信されます。

私は公式の文書とrelated questionをよく読んで直感的に私のセットアップでプリフェッチされたタスクが認められていると感じます。そうですか?

答えて

2

CELERY_ACKS_LATE=Falseで作業者がそれを実行し始めると、タスクは承認されます:just before execution

従業員がタスクの実行を開始し、それを終了すると、タスクは失われます。他のプリフェッチされたタスクはまだ未確認であるため、失われません。

+0

それは妥当だと思いますが、花の先読みタスクは「受信済み」とマークされています。実行され始めていないという意味ですか? –

+0

私は 'RECEIVED'はRabbitmqの観点から' Unacked'を意味すると思います。他の作業者は、「準備完了」ではないので、それらをプリフェッチすることはできません。しかし、労働者が承認を得ずに接続を失うと、彼らは「準備ができました」となるでしょう。 – Raz

+0

しかし、もし私がこれらのタスクを他のノードに割り当てることができることをrabbitmqがどのように知っているのでしょうか? –

関連する問題