Unknown queue names show on Rabbitmq mgmt. when using Celery
我只创建了下表中显示在 Rabbitmq 管理 Webui 中的最后 2 个队列名称:
表的其余部分有类似哈希的队列,我不知道:
1
2
3 1– Who created them? (I know it is celery, but which process, task,etc.)2– Why they are created, and what they are created for?.
我可以注意到,当推送消息的数量增加时,那些类似哈希的消息的数量也会增加。
- .pidbox 队列用于通过向工作人员广播命令来控制工作人员:docs.celeryproject.org/en/latest/userguide/… 然后 celeryev 队列由监视器和其他想要订阅事件的工具使用。有两种类型的事件:worker 和 task。工作人员将使用与工作人员相关的事件来同步逻辑时钟。 Flower 是一个基于 Web 的监视器,它还订阅与任务相关的事件:docs.celeryproject.org/en/latest/userguide/…
- 正如下面的答案所说,当您使用 amqp 结果后端时,名为队列的哈希是任务结果。这个后端性能不是很好,如果你想将结果存储在磁盘上,或者如果你想要 RPC 调用你应该使用新的 rpc 后端,最好使用数据库。
当使用 celery 时,Rabbitmq 被用作默认的结果后端,也用于存储失败的错误
任务(引发异常)。每个新任务都会在服务器上创建一个新队列,其中包含数千个任务
代理可能会因队列超载而影响性能
以消极的方式。Rabbit 中的每个队列都是一个单独的 Erlang 进程,所以如果你打算
同时保留许多结果,您可能必须增加 Erlang
进程限制,以及您的操作系统的最大文件描述符数
允许。旧结果不会自动清理,所以我们必须告诉
兔子这样做。下面的conf。线决定了温度的生存时间
排队。默认为 1 天
1 CELERY_AMQP_TASK_RESULT_EXPIRES = Number of seconds或者,我们可以完全更改后端存储,而不是在 Rabbit 中进行。
1 CELERY_BACKEND =“amqp”我们也可以忽略它:
1 CELERY_IGNORE_RESULT = True.另外,当忽略结果时,我们也可以将错误保存起来以备后用,
这意味着失败的任务多了一个队列。
1 CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True.我不会将此问题标记为已回答,等待更好的答案。
参考:
- 这个 SO 链接
- 芹菜文档
- Rabbitmq 文档
- 请注意,Celery 3.1 中还有一个新的 RPC 后端,它为每个客户端创建一个队列
- @asksol,感谢您的评论。谁在调用这个 RPC?每个客户端创建什么队列?
- 有两个基于 AMQP 的结果后端:1)\\’amqp\\’ 结果后端,它将结果存储在磁盘上,每个任务使用一个队列,以便任何进程都可以检索结果;2)\\’rpc\\’ 结果后端(Celery 3.1 中的新功能)每个客户端使用一个队列来发送结果(不在磁盘上),并且只有启动任务的进程才能检索结果。您必须显式启用这些结果后端,因为默认情况下 celery 不会对返回值做任何事情。
- 你对此有更清楚的了解吗?我正在使用 db 后端来存储结果,但我仍然看到 pidbox 队列。我的理解是,ev 队列用于使用您指出的花之类的工具进行监视。
- 这里有同样的问题(并且不使用结果后端)… @asksol 您能否确认 pidbox 队列是否仅用于远程控制工作人员,如此处所述 docs.celeryproject.org/en/3.1/userguide/… 或有其他用途?
来源:https://www.codenong.com/20442580/