3

我有 celery 设置来从 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 并且只有一个进程处于活动状态。我已经在 celery-flower 上尝试了add_consumer命令,但似乎没有任何反应。我可以在 RabbitMQ 上看到有消息ACK还没有,并且状态中的消息READY刚刚开始堆积,因为它们不会再被消耗约 2 小时。

有没有办法设置 celery 以便每当一个进程空闲时,它将消耗下一个任务,而不是等待原始批次完全完成?

4

0 回答 0