Я использую Celery для фоновых заданий для моего приложения Django, размещенного на Heroku, с Redis в качестве брокера. и я хочу установить приоритеты задач.
В настоящее время я использую очередь Celery по умолчанию, и все работники получают данные. Я думал о реализации приоритетов в единственной очереди , но это везде описывается как плохая практика. Консенсус в отношении лучшего подхода к решению проблемы приоритета состоит в том, чтобы установить различные очереди Celery для каждого уровня приоритета . Допустим,
Очередь1 для задач с наивысшим приоритетом, назначенным для x рабочих
Очередь2 - очередь по умолчанию, назначенная всем остальным работникам
Первая проблема, которую я вижу с этим методом, заключается в том, что если в какой-то момент нет задачи с высоким приоритетом, я теряю производительность рабочих x.
Также, скажем, моя инфраструктура расширяется, и у меня есть больше рабочих. Только количество работников по умолчанию будет динамически расширяться. Кроме того, этот метод не позволяет мне хранить идентичные dyno (контейнеры в Heroku), которые не выглядят оптимизированными для масштабируемости.
Существует ли эффективный способ справиться с определением приоритетов задач и одновременно сохранить реплицируемых рабочих?