【发布时间】:2011-12-15 15:15:39
【问题描述】:
我正在使用 Django、Celery 和 RabbitMQ 编写一个邮件列表管理器。当有消息进来时,会为每个接收者执行一个任务。所有任务都进入一个队列,一个或多个工作人员使用队列中的任务,构建电子邮件消息并发送它们。
单个队列会导致公平性问题:如果一条消息进入一个大型邮件列表,则会将大量任务添加到队列中,并且其他消息无法通过其他较小的邮件列表,直到所有消息都到达大名单已发送。我怎样才能找到解决这个问题的方法?
从概念上讲,一个解决方案是为每个邮件列表创建一个队列,并让工作人员从各个队列循环中消费任务。考虑到我需要能够动态创建新的邮件列表,这在 Celery 中是否可行?我还没有看到动态创建队列或使工作人员从新队列中消费的功能。
【问题讨论】:
-
任务优先级将是一个不错的解决方案。耻辱兔子没有实现它们yet。
-
@Vebjorn Ljosa,嗨,你是怎么解决的?
标签: message-queue rabbitmq celery