Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 4, 2013 13:14:45

Antonio051
От:
Зарегистрирован: 2011-01-06
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Django Celery Multiple queues

Есть celery-worker, который обслуживает конкретную очередь:
python manage.py celery worker -c 1 -E -l INFO -n phones -Q htc
“-n phones” - имя воркера
“-Q htc” - имя, обслуживаемой очереди

Динамически создаю новую очередь и отправляю её воркеру “phones”.

Как заставить воркер обслуживать одновременно две очереди. Чтобы брал задания из каждой очереди.
Сейчас же он берёт по принципу FIFO.

PS. “-c 1” это для пирмера. Увеличивать concurrency не вариант. Необходимо равномерно опустошать очереди.

Брокер: RabbitMQ/Redis



Офлайн

#2 Ноя. 4, 2013 13:51:55

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Django Celery Multiple queues

Указать вторую очередь через запятую.
Но это все равно не гарантирует математической равномерности.



Офлайн

#3 Ноя. 4, 2013 13:57:46

Antonio051
От:
Зарегистрирован: 2011-01-06
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Django Celery Multiple queues

Lexander
Указать вторую очередь через запятую.
-Q htc,lg
Это я в курсе.
Но я делаю это динамически.



Офлайн

#4 Ноя. 4, 2013 15:25:47

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Django Celery Multiple queues

Динамически задаете название очереди или что?
http://docs.celeryproject.org/en/latest/userguide/workers.html#std:control-add_consumer



Офлайн

#5 Ноя. 4, 2013 15:34:41

Antonio051
От:
Зарегистрирован: 2011-01-06
Сообщения: 31
Репутация: +  1  -
Профиль   Отправить e-mail  

Django Celery Multiple queues

Lexander
http://docs.celeryproject.org/en/latest/userguide/workers.html#std:control-add_consumer
Именно это я и использую.
Проблема в том, как воркер берет задания из нескольких очередей.
Наткнулся на weighted fair queueing. Это то, что мне нужно.
Celery использует Kombu. В ней есть такая штука http://kombu.readthedocs.org/en/latest/reference/kombu.transport.virtual.scheduling.html

Теперь не понимаю как её использовать?

Далее вижу http://docs.celeryproject.org/en/master/whatsnew-3.0.html#redis-now-cycles-queues-so-that-consuming-is-fair
Т.е. если использовать redis как брокер, то будет работать “справедливая очередь”.
Ща попробую



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version