我已经开始了这样的芹菜工人:
celery -A workerTasks worker --concurrency 1 --loglevel=info
,但我看到它正在接收多个任务:
[2019-05-08 10:33:07,371: INFO/MainProcess] celery@2aaf46abfaed ready.
[2019-05-08 10:33:07,372: INFO/MainProcess] Received task: workerTasks.do_processing_task[a3c19e7a-6b04-4236-8afc-0884547d3f39]
[2019-05-08 10:33:07,373: INFO/MainProcess] Received task: workerTasks.do_processing_task[f22443c1-6dee-4ecf-8c54-7a7c4da5418e]
[2019-05-08 10:33:07,373: INFO/MainProcess] Received task: workerTasks.do_processing_task[6eb501b7-c192-46db-be78-6061300b6bdf]
[2019-05-08 10:33:07,373: INFO/MainProcess] Received task: workerTasks.do_processing_task[ec08b59f-541e-42fc-806d-cfbd40daf7b7]
[2019-05-08 10:33:07,479: INFO/MainProcess] Received task: workerTasks.do_processing_task[deaaec17-b07c-4476-9b44-9f8e884b0b6e]
为什么不只是收到一个?
谢谢。
我相信这是由于worker_prefetch_multiplier
设置而引起的。从文档中:
一次预摘要乘以多少消息乘以 并发过程。默认值为4个(每封四个消息 过程(。但是,默认设置通常是一个不错的选择 - 如果 您的运行时间很长,在队列中等待 开始工人,请注意,第一个开始的工人将收到 最初是消息数的四倍。因此,任务可能不是 公平分配给工人。
基本上,芹菜将尝试从经纪人批量获取任务。这样做是为了避免过多的往返旅行。