Skip to main content
 首页 » 编程设计

django之允许RabbitMQ服务器连接

2025年05月04日210me-sa

我正在尝试让Django Celery worker 连接到RabbitMQ服务器,所有服务器都在同一主机上运行。

但是,当我运行manage.py celery worker时,我得到的是:

[2013-06-11 17:33:41,185: WARNING/MainProcess] celery@localhost has started. 
[2013-06-11 17:33:44,192: ERROR/MainProcess] Consumer: Connection Error: Socket closed. Trying again in 2 seconds... 
[2013-06-11 17:33:50,203: ERROR/MainProcess] Consumer: Connection Error: Socket closed. Trying again in 4 seconds... 
[2013-06-11 17:34:03,214: ERROR/MainProcess] Consumer: Connection Error: Socket closed. Trying again in 6 seconds... 
[2013-06-11 17:34:27,232: ERROR/MainProcess] Consumer: Connection Error: Socket closed. Trying again in 8 seconds... 

当我检查自己的 /var/log/rabbitmq/rabbit@localhost.log时,我看到一些消息,例如:
=ERROR REPORT==== 11-Jun-2013::17:33:44 === 
exception on TCP connection <0.201.0> from 127.0.0.1:43461 
{channel0_error,opening, 
                {amqp_error,access_refused, 
                            "access to vhost 'myapp' refused for user 'guest'", 
                            'connection.open'}} 

我正在使用Ubuntu 12.04仓库中的标准软件包,其默认设置和django-celery设置如下:
BROKER_HOST = "localhost" 
BROKER_PORT = 5672 
BROKER_USER = "guest" 
BROKER_PASSWORD = "guest" 
BROKER_VHOST = "myapp" 

为什么RabbitMQ拒绝连接?

请您参考如下方法:

看来您需要为“访客”用户授予对“/ myapp”虚拟主机的访问权限。

From the docs:

set_permissions [-p vhostpath] {user} {conf} {write} {read} 

因此,与此类似的内容将为 guest 用户提供无限的访问权限:
rabbitmqctl set_permissions -p /myvhost guest ".*" ".*" ".*"