celery - 有一个带有多个队列的芹菜工人有什么意义?
问题描述
从多个队列消费的Celery工作人员如何决定从哪个队列开始消费?
我已经设置了一个工作人员并让它监听两个队列。我从上面链接的问题中了解到,工作人员会循环使用这两个队列中的消息,或者按照它们到达的顺序(取决于 celery 版本)。
那么这个设置的目的是什么?为什么它与单个队列不同?这仅对监控有帮助,还是我在这里缺少操作优势?
解决方案
在大多数情况下,您的工作人员只会订阅一个队列,但是在某些情况下能够订阅多个队列是有意义的。
这是一个。想象一下,你有一个由 10 台机器组成的 Celery 集群。他们执行各种任务,其中有一项任务是从远程文件服务器下载文件。但是,文件服务器的所有者仅将 10 个机器 IP 中的两个列入白名单,因此基本上只有其中两个可以从该特定文件服务器下载文件。通常,您会让这两台机器上的 Celery 工作人员订阅一个额外的队列,例如称为“下载”,并通过将下载任务发送到“下载”队列来安排下载任务。
这是一个非常常见的场景,其中一部分节点可以做特定的事情(访问远程服务器 - 文件服务器、数据库服务器等)。
有人可能会争论“为什么不在这两台机器上设置‘下载’队列?” - 这可能是一种资源浪费。
推荐阅读
- swift - 真的不知道如何设置功能以识别单元格是否被选中
- c - 获取鼠标按钮状态非阻塞linux
- sql - Laravel updateOrCreate on hasOne 具有不同值的关系
- python - 获取 pymongo.errors.CursorNotFound: cursor id "..." not found
- javascript - 为什么我的 Firestore 权限不起作用?
- python - 按键过滤字典
- python - 在 for 循环中递增计数器以对简单数组求和
- git - 如何从 Heroku 保存文件?
- javascript - 参数类型与 UrlFetchApp 有效负载不匹配
- c# - 使用 C# 编辑 WAV 文件