Celery Принимает больше задач, чем параллелизм рабочих

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

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

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

Мое позднее подтверждение установлено = true, а таймаут видимости для worker = 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. Цветок сельдерея  введите здесь описание изображения Снимок экрана 2: пользовательский интерфейс Airflow введите описание изображения здесь


person pg20    schedule 30.04.2019    source источник


Ответы (1)