我可能会误解这是如何工作的(这就是我要问的原因),但我认为当芹菜工人从 RabbitMQ 消费一项任务时,它会锁定它——可以这么说——然后必须承认它完成了该任务一旦完成。所以说我有 4 个工作人员,它们的预取设置都为 1,并且需要很长时间才能排队 6 个任务。一旦我启动这些工人并运行:
rabbitmqctl -q list_queues name messages messages_ready messages_unacknowledged
我希望看到类似的东西:
celery 6 2 4
表示有 4 个任务正在运行(但尚未确认),其中 2 个已准备好使用。
我认为我的理解是错误的,因为我实际看到的是:
celery 2 0 2
因此,就好像在工作人员收到消息时发生确认,但在该工作人员完成处理该任务之前。
总而言之,我的问题是,芹菜工人什么时候承认自己有任务?似乎它是在收到该任务并开始处理它时,而不是在它完成处理时。有人可以确认吗?