CELERYD_PREFETCH_MULTIPLIER
構成オプション(docs )について知りました。デフォルトは 4 ですが、(私が思うに) プリフェッチをオフにするか、できるだけ低くしたいと考えています。今は 1 に設定しました。これは探しているものに十分近いですが、まだ理解できないことがいくつかあります。
このプリフェッチが良いアイデアである理由は何ですか? メッセージキューとワーカーの間に多くの待ち時間がない限り、その理由はわかりません (私の場合、それらは現在同じホストで実行されており、最悪の場合、同じデータ内の別のホストで実行される可能性があります)中心)。ドキュメントには欠点のみが記載されており、利点が何であるかは説明されていません。
多くの人は、この方法でプリフェッチをオフにできることを期待して、これを 0 に設定しているようです (私の意見では妥当な仮定です)。ただし、0 は無制限のプリフェッチを意味します。そもそもタスクキューを導入した同時実行性/非同期性が完全に排除されないのではないでしょうか?
プリフェッチをオフにできないのはなぜですか? ほとんどの場合、これをオフにすることはパフォーマンスにとって良い考えではないかもしれませんが、これが不可能な技術的な理由はありますか? それとも実装されていないだけですか?
場合によっては、このオプションは に接続され
CELERY_ACKS_LATE
ます。例えば。Roger Hu は次のように書いています«[…] 多くの場合、[ユーザー] が本当に望んでいるのは、子プロセスと同じ数のタスクだけをワーカーに予約させることです。しかし、これは遅延確認を有効にしないと不可能です […]» これら 2 つのオプションがどのように接続されているのか、なぜ一方が他方なしでは不可能なのかがわかりません。接続の別の言及はここにあります。2 つのオプションが関連付けられている理由を誰か説明できますか?