У меня есть 2 вида задач: Type1 - несколько небольших задач с высоким приоритетом. Type2 - много тяжелых задач с более низким приоритетом.
Первоначально у меня была простая конфигурация с маршрутизацией по умолчанию, не использовались ключи маршрутизации. Этого было недостаточно - иногда все рабочие были заняты задачами Type2, поэтому Task1 была отложена. Я добавил ключи маршрутизации:
CELERY_DEFAULT_QUEUE = "default"
CELERY_QUEUES = {
"default": {
"binding_key": "task.#",
},
"highs": {
"binding_key": "starter.#",
},
}
CELERY_DEFAULT_EXCHANGE = "tasks"
CELERY_DEFAULT_EXCHANGE_TYPE = "topic"
CELERY_DEFAULT_ROUTING_KEY = "task.default"
CELERY_ROUTES = {
"search.starter.start": {
"queue": "highs",
"routing_key": "starter.starter",
},
}
Итак, теперь у меня есть 2 очереди - с задачами с высоким и низким приоритетом.
Проблема - как запустить 2 celeryd с различными настройками concurrency?
Раньше сельдерей использовался в режиме демона (в соответствии с к этому), поэтому требуется только начало /etc/init.d/celeryd start
, но теперь мне нужно запустить 2 разных сельдерея с разными очередями и concurrency. Как я могу это сделать?