芹菜工人接受太多任务

时间:2019-05-08 10:37:03

标签: python django celery

我像这样开始了我的芹菜工人:

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]  

为什么不只收到一个?

谢谢。

1 个答案:

答案 0 :(得分:2)

我认为这是由于worker_prefetch_multiplier设置所致。来自documentation

  

一次要预取多少条消息乘以   并发过程。默认值为4(每条四个消息   处理)。通常,默认设置是一个不错的选择–   您有很长的运行任务在队列中等待,您必须   启动工作人员,请注意,第一个开始工作的人员将获得   最初的消息数量的四倍。因此,任务可能不是   公平地分配给工人。

基本上,Celery会尝试从您的代理中批量提取任务。这样做是为了避免往返太多。