【发布时间】:2015-05-19 09:04:34
【问题描述】:
我在 EC2 上的两个实例上创建了一个 rabbitmq 集群。我的 django 应用程序将 celery 用于异步任务,而后者又将 RabbitMQ 用于消息队列。
每当我用命令启动 celery 时:
python manage.py celery worker --loglevel=INFO
或
python manage.py celeryd --loglevel=INFO
我不断收到以下与远程 RabbitMQ 相关的错误消息:
[2015-05-19 08:58:47,307: ERROR/MainProcess] consumer: Cannot connect to amqp://myuser:**@<ip-address>:25672/myvhost/: Socket closed.
Trying again in 2.00 seconds...
我使用以下方式设置权限:
sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"
然后在两个集群节点上重新启动 rabbitmq-server。然而,它没有帮助。
在日志文件中,我看到如下几个条目:
=INFO REPORT==== 19-May-2015::08:14:41 ===
accepting AMQP connection <0.1981.0> (<ip-address>:38471 -> <ip-address>:5672)
=ERROR REPORT==== 19-May-2015::08:14:44 ===
closing AMQP connection <0.1981.0> (<ip-address>:38471 -> <ip-address>:5672):
{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost 'myvhost' refused for user 'myuser'",
'connection.open'}}
【问题讨论】:
-
python worker 和 RabbitMQ 是不同的实例吗?
-
是的。 Celery worker 在我的笔记本电脑上,而 rabbitmq 在 EC2 上
-
好的,问题是您的实例位于 EC2 的防火墙后面,它不接受来自外部的请求。
-
但在安全组中,我将端口 5672、4369 和 25672 保持打开状态。
-
你是不是把RabbitMQ的配置改成在localhost外监听了?
标签: django amazon-ec2 rabbitmq celery