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

Я использую сельдерей для своих требований к проекту. В настоящее время я создал очередь «HighPriorityQueue» вместе с очередью по умолчанию, т.е. будет один рабочий и две очереди.

В обе эти очереди будут поставлены разные задачи. Мне нужно обрабатывать «HighPriorityQueue» всякий раз, когда задача ставится в очередь.

Я сомневаюсь, что как сельдерей будет обрабатывать эти очереди? Будет ли сельдерей обрабатывать очереди параллельно? Или я могу сделать так, чтобы, если какая-то задача поставлена ​​в очередь в «HighPriorityQueue», она должна была обрабатываться немедленно, независимо от заданий, которые уже поставлены в очередь по умолчанию?

Прошу совета и заранее спасибо.


person SkariaArun    schedule 04.03.2013    source источник


Ответы (1)


Ого, старый вопрос...

Celery не может установить приоритет в наборе очередей. Лучше всего иметь пул рабочих процессов с высоким приоритетом, который использует только HighPriortyQueue, и пул рабочих процессов по умолчанию, который использует либо default+HighPriorityQueue, либо просто `default.

Некоторые брокеры сообщений (RabbitMQ наверняка) позволяют вам устанавливать приоритет в очереди, сообщения в очередь вверху для обработки в первую очередь, тогда ваш единственный рабочий Celery может тупо потреблять эти сообщения и выполнять в основном то, что вы хотите. Однако выполнение этого на уровне очереди сопряжено со своими проблемами/подводными камнями.

person bluescores    schedule 11.12.2018