Сельдерей не выполняет задачи одновременно - PullRequest
2 голосов
/ 22 июня 2019

Я новичок в сельдерее, пожалуйста, дайте мне знать в комментариях, если требуется дополнительная информация.

У меня есть около 3000 задач, поставленных в очередь в Redis, и я хочу выполнить эти задачи одновременно в нескольких потоках, после небольшого исследования я в конечном итоге использовал eventlet для пула потоков и установил параллелизм на 500, например,

celery worker -A <app_name> -P eventlet -c 500

но когда я проверил цветок сельдерея, появилось много свободных нитей, которые сельдерей не использует enter image description here

Есть идеи, как использовать эти свободные темы и быстрее выполнять задачи? Также, если возможно, пожалуйста, предложите хороший текст для работы с сельдереем

1 Ответ

1 голос
/ 22 июня 2019

В каждом из этих потоков будет запущено 500 событийлетов. Если ваши 3000 задач недолговечны, они выполнят свою работу очень быстро. Кроме того, ваш счетчик предварительной выборки равен 400, что означает, что, пока ваш рабочий (поток) выполняет 500 сопрограмм, он также будет иметь 400 предварительно выбранных задач. 3 * (500 + 400) = 2700 задач будут немедленно взяты из очереди, при условии, что все ваши рабочие простаивают.

...