python - 按消费者分配 celery worker

标签 python rabbitmq celery


这是我的问题的一些背景。
我们有一个转换器可以将 xml 转换为 api 调用。
我们有很多客户转换 xml,现在有些客户必须等到客户完成 100 个 xml 文件的转换。
我们有 celery 和 rabbitmq 一起工作

我想要实现的是:
将所有 celery worker 分配给一个客户,直到另一个客户发送 xml 如果队列中有另一个客户,则将一半的 celery worker 分配给另一个客户。

有人能给我指出正确的方向吗,我似乎不知道从哪里开始寻找。 对不起,我的奇怪句子英语不是我的第一语言。

最佳答案

关于您要实现的目标 - 我认为对于 Celery 来说太复杂了。

显而易见的答案是使用 concurrency 来增加 Celery worker 的数量启动 worker 时的选项。这很容易做到,您不需要更改代码。我会推荐它。

另一个不是那么容易的选项,但是可以是一个漂亮的解决方案,是使用单独的 RabbiMQ virtual host对于每个客户。 在这种情况下,我无法告诉您如何完全做到这一点,但它可以作为您的起点。

关于python - 按消费者分配 celery worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54311791/

相关文章:

python - 标识符中的Unicode下标和上标,为什么Python认为XU == Xᵘ == Xᵤ?

python - numpy:沿第一轴乘以任意形状数组

python - 执行 subprocess.Popen ('su' 时挂起,shell=True)

python - Celey + Python 忽略 update_state 调用

python - 如何在python中将整数列表写入二进制文件

docker - 从不同的docker-compose.yml部署容器

java - Spring Boot/RabbitMQ 避免 unack 消息

rabbitmq - 如果rabbitmq不能用作锁定服务,那么什么可以?

python - Linux 上的 Redis 管道崩溃

python - 在应用上下文中运行 Celery worker 仍然会在任务中引发 "working outside of app context"错误