gpt4 book ai didi

message-queue - 使用 Celery 动态创建队列

转载 作者:行者123 更新时间:2023-12-04 05:51:14 25 4
gpt4 key购买 nike

我正在使用 Django、Celery 和 RabbitMQ 编写一个邮件列表管理器。当有消息进来时,会为每个接收者执行一个任务。所有任务都进入一个队列,一个或多个工作人员使用队列中的任务,构建电子邮件消息并发送它们。

单个队列会导致公平性问题:如果一条消息进入一个大型邮件列表,则将大量任务添加到队列中,并且其他消息无法通过其他较小的邮件列表,直到所有消息都进入大列表已经发出了。我怎样才能找到解决这个问题的方法?

从概念上讲,一种解决方案是为每个邮件列表创建一个队列,并让工作人员从各个队列循环中消费任务。考虑到我需要能够动态创建新的邮件列表,这在 Celery 中是否可行?我还没有看到动态创建队列或使工作人员从新队列中消费的功能。

最佳答案

如下图所示,考虑一个使用主题交换而不是直接交换的系统。

与直接交换不同,主题交换允许我们将不同的消息路由到不同的队列。这是通过为每条消息设置 routing_key 并绑定(bind)某些队列以仅接受具有特定路由键的消息来完成的。

可以设置一个系统,将高优先级转到专用队列和消费者,类似地,正常或低优先级消息由一个或多个队列处理。

Celery 支持跨多个工作人员的负载平衡(工作人员的数量取决于硬件)。像 BROKER_POOL_LIMIT、PREFETCH_LIMIT 等 Celery 配置设置有助于更好地平衡负载并减少拥塞。

enter image description here

关于message-queue - 使用 Celery 动态创建队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com