Celery - запускайте разных рабочих на одном сервере

У меня есть 2 вида задач: Type1 - несколько небольших задач с высоким приоритетом. Type2 - много тяжелых задач с более низким приоритетом.

Изначально у меня была простая конфигурация с маршрутизацией по умолчанию, ключи маршрутизации не использовались. Этого было недостаточно - иногда все рабочие были заняты задачами типа 2, поэтому задача 1 откладывалась. Я добавил ключи маршрутизации:

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 сельдерея с разными настройками параллелизма?

Раньше использовался сельдерей в режиме демона (согласно к этому ), поэтому требовалось только начало /etc/init.d/celeryd start , но теперь мне нужно запустить 2 разных сельдерея с разными очередями и параллелизм. Как я могу это сделать?

34
задан Andrew 28 March 2011 в 18:16
поделиться