关于 python:Rabbitmq mgmt 上显示未知队列名称。使用芹菜时

Unknown queue names show on Rabbitmq mgmt. when using Celery

我只创建了下表中显示在 Rabbitmq 管理 Webui 中的最后 2 个队列名称:

enter

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?.

我可以注意到,当推送消息的数量增加时,那些类似哈希的消息的数量也会增加。


当使用 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 文档