Я пишу менеджер списков рассылки, используя Django, Celery и RabbitMQ. Когда приходит сообщение, задача выполняется для каждого получателя. Все задачи отправляются в одну очередь, и один или несколько рабочих используют задачи из очереди, создавая сообщения электронной почты и отправляя их.
Одиночная очередь вызывает проблему справедливости: если сообщение входит в большой список рассылки, большое количество задач добавляется в очередь, и другие сообщения не могут попасть в другие, более мелкие списки рассылки, пока все сообщения не большой список был отправлен. Как я могу найти способ обойти это?
Концептуально, решение будет состоять в том, чтобы создать очередь для каждого списка рассылки и попросить рабочих принимать задания из различных циклических очередей. Возможно ли это в Celery, учитывая, что мне нужно иметь возможность динамически создавать новые списки рассылки? Я не видел функциональности для динамического создания очередей или для того, чтобы рабочие (и) потребляли новые очереди.