Как определить приоритет задач Celery при обработке большого количества файлов, чтобы предотвратить длительное время ожидания пользователей?

Я работаю над Django-приложением, в котором пользователи могут загружать файлы для обработки задачами Celery. Каждая загрузка файла запускает задачу Celery, которая обрабатывает файл по отдельности. Проблема возникает, когда пользователь загружает большую партию файлов (например, 10 000 файлов), так как это заставляет последующих пользователей (например, 100 файлов) ждать, пока партия первого пользователя полностью обработается. Это приводит к значительным задержкам и ухудшению пользовательского опыта для тех, кто загружает небольшие партии файлов.

Задачи разделяются на очереди, ориентированные на конкретного пользователя.

Каждая очередь именуется по шаблону user-{user_id} (например, user-1, user-2, ..., user-10).

Моя цель - добиться стратегии круговой обработки этих очередей: после обработки задачи из очереди user-1 рабочий должен перейти к обработке задачи из очереди user-2, и так далее, циклически проходя через очереди, пока все задачи не будут обработаны.

Начни:

Мне не удалось настроить Celery на прослушивание очередей по шаблону (например, user-.*). Список очередей для рабочего Celery должен быть предопределен и не может динамически подстраиваться под новые пользовательские очереди по мере их создания.

Вопрос:

Существует ли способ настроить Celery workers на круговую обработку заданий в нескольких пользовательских очередях?

Вернуться на верх