Сельдерей получает слишком много заданий - PullRequest
2 голосов
/ 08 мая 2019

Я начал свой рабочий в сельдерее так:

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 Ответ

2 голосов
/ 08 мая 2019

Я считаю, что это связано с настройкой worker_prefetch_multiplier. Из документации :

Сколько сообщений нужно предварительно выбрать за раз, умноженное на количество параллельные процессы. По умолчанию 4 (четыре сообщения для каждого процесс). По умолчанию, как правило, хороший выбор - однако, если у вас есть очень долго выполняющиеся задачи, ожидающие в очереди, и вы должны Запустите рабочих, обратите внимание, что первый рабочий, чтобы начать, получит изначально в четыре раза больше сообщений Таким образом, задачи не могут быть справедливо распределен среди рабочих.

В основном, Celery будет пытаться получать задания пакетами от вашего брокера. Это сделано для того, чтобы избежать слишком большого количества поездок туда и обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...