Выборка задач из многих очередей - PullRequest
0 голосов
/ 14 марта 2012

У меня есть 2 типа задач, одна из которых создается пользователем, а другая - огромными партиями.Задачи собираются в отдельные очереди («короткие» и «длинные»). Когда в одной очереди есть задачи (т. Е. Этот огромный пакет), Celery выбирает только те задачи, полностью игнорируя другую очередь, пока весь пакет не будет завершен.

Example:
send 100 slow tasks to "long" queue
send 100 small tasks to "short" queue
send 100 slow tasks to "long" queue
send 100 small tasks to "short" queue

Celery behaviour:
process 100 tasks form "long" queue
process 100 tasks form "short" queue 
process 100 tasks form "long" queue 
process 100 tasks form "short" queue

Это происходит даже тогда, когда я устанавливаю rate_limit для медленных задач, это идет в «длинную» очередь.Все, что я получаю, это медленные задачи, которые дольше блокируют систему: / Есть ли способ убедиться, что Celery выбирает задачи из всех очередей?(Я использую Celery 2.5.1 с RabbitMQ)

1 Ответ

0 голосов
/ 15 марта 2012

Вы можете запустить отдельного работника сельдерея для каждой очереди:

$ celeryd -Q short

$ celeryd -Q long

В этом случае каждый тип задания будет обрабатываться независимо отдельным работником.

...