Rabbitmq mgmt上显示未知的队列名称.什么时候使用芹菜

sec*_*rve 9 python amqp rabbitmq celery

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

在此输入图像描述

表的其余部分有类似哈希的队列,我不知道:

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?.
Run Code Online (Sandbox Code Playgroud)

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

sec*_*rve 7

使用celery时,Rabbitmq用作默认结果后端,也用于存储失败任务的错误(引发异常).

每个新任务都会在服务器上创建一个新队列,其中代理可能会使用队列重载数千个任务,这将以负面方式影响性能.

Rabbit中的每个队列都是一个单独的Erlang进程,因此如果您计划同时保留许多结果,则可能需要增加Erlang进程限制以及操作系统允许的最大文件描述符数.

旧结果不会自动清理,所以我们必须告诉兔子这样做.

以下conf.line指示临时队列的生存时间.默认值为1天

CELERY_AMQP_TASK_RESULT_EXPIRES = Number of seconds
Run Code Online (Sandbox Code Playgroud)

或者,我们可以完全改变后端存储,而不是在Rabbit中.

CELERY_BACKEND = "amqp"
Run Code Online (Sandbox Code Playgroud)

我们也可能会忽略它:

CELERY_IGNORE_RESULT = True.
Run Code Online (Sandbox Code Playgroud)

此外,当忽略结果时,我们还可以保留错误以供以后使用,这意味着失败任务还有一个队列.

CELERY_STORE_ERRORS_EVEN_IF_IGNORED = True.
Run Code Online (Sandbox Code Playgroud)

我不会将这个问题标记为已回答,等待更好的答案.

Rererences:

  • 这个SO链接
  • 芹菜文档
  • Rabbitmq文档