RabbitMQ からタスクをフェッチするようにセロリをセットアップしましたが、例外として機能していますが、次の動作に気付きました ( T
: タスク、P
: プロセス):
--> Fetch first batch of messages (6 tasks) from broker
<-- messages are received. Start them
--> Send T1..T6 to be executed by P1..P6
--> Prefetch 6 new messages from broker, but do not ACK them
<-- P1..P5 finish tasks T1..T5, but T6 is still being processed (it will take ~2h)
この時点で、同時実行数を 6 に設定し、アクティブなプロセスが 1 つしかないにもかかわらず、他のタスクは実行を開始しません。セロリの花でadd_consumerコマンドを試しましたが、何も起こらないようです。RabbitMQ でACK
、メッセージがまだないREADY
状態で、さらに 2 時間は消費されないため、状態のメッセージが積み重なっていくのがわかります。
元のバッチが完全に終了するのを待つのではなく、プロセスが空いているときはいつでも次のタスクを消費するようにセロリをセットアップする方法はありますか?