Сельдерей Принимает больше задач, чем рабочий параллелизм - PullRequest
0 голосов
/ 30 апреля 2019

Я выполняю несколько длительных задач в выделенной очереди. Так что нет коротких временных задач. В настоящее время, когда я запускаю многократные задачи в одной очереди, новые задачи передаются работнику, который уже заполнен, т.е. нет задач = параллелизм работника. Рабочий 2, слушающий одну и ту же очередь, все еще имеет меньше задач и может принять больше задач. В идеале задача должна идти к работнику 2.

В чем причина такого поведения? Это из-за предварительной загрузки?

Далее мы видим, что задание, переданное работнику 1, которое уже заполнено, отправляется работнику 2 через некоторое время, то есть около 2 часов. Почему это происходит? А почему через 2 часа? Есть ли способ сократить время перехода задачи от работника 1 к работнику 2.

Мое позднее подтверждение установлено = true и время ожидания видимости на работнике = 6 часов. Брокер Redis. версия сельдерея 4.2.1

Я приложил несколько скриншотов, чтобы поймать это поведение: Мой другой рабочий все еще пуст, но он идет к рабочему, который уже заполнен

Я мог бы приблизиться к этому только в этой ссылке http://docs.celeryproject.org/en/latest/userguide/optimizing.html#reserve-one-task-at-a-time

Пожалуйста, проверьте в качестве примера trailblazer.streaming.growth_fortune trailblazer-growth-fortune-stream-0001 2019-04-25T10: 10: 00. Задача была поставлена ​​в очередь в 10:18 для работника 1, затем через 2 часа она начала выполняться на работнике 2 в 12:20. Снимок экрана 1: Цветок сельдерея enter image description here Снимок экрана 2: Airflow Ui enter image description here

1 Ответ

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

По умолчанию сельдерей будет предварительно выбирать 4 задачи за раз . В краткосрочных задачах это поведение более эффективно, поскольку работнику не нужно постоянно возвращаться в очередь, чтобы получить больше задач, потому что у него уже есть несколько зарезервированных для работы. В случае таких длительных задач, как у вас, вполне вероятно, что вы хотите «отключить» предварительную выборку с помощью параметра -O fair, как описано здесь

...