我设置了rabbitmqserver并使用以下步骤添加了用户:
uruddarraju@*******:/usr/lib/rabbitmq/lib/rabbitmq_server-3.2.3$ sudo rabbitmqctl list_users
Listing users ...
guest [administrator]
phantom [administrator]
phantom1 []
sudo rabbitmqctl set_permissions -p phantom phantom1 ".*" ".*" ".*"
uruddarraju@******:/usr/lib/rabbitmq/lib/rabbitmq_server-3.2.3$ sudo netstat -tulpn | grep :5672
tcp6 0 0 :::5672 :::* LISTEN 31341/beam.smp
我的芹菜配置如下:
BROKER_URL = 'amqp://phantom:phantom1@10.98.85.92/phantom'
我的代码就像:
__author__ = 'uruddarraju'
from celery import Celery
import time
import celeryconfig
app = Celery('tasks')
app.config_from_object(celeryconfig)
@app.task
def add(x, y):
print 'sleeping'
time.sleep(20)
print 'awoke'
return x + y
当我尝试运行时
celery -A celery worker --loglevel=info
我得到了
[2014-07-08 23:30:05,028: ERROR/MainProcess] consumer: Cannot connect to amqp://phantom:**@10.98.85.92:5672/phantom:
[Errno 54] Connection reset by peer.
Trying again in 2.00 seconds...
[2014-07-08 23:30:07,101: ERROR/MainProcess] consumer: Cannot connect to amqp://phantom:**@10.98.85.92:5672/phantom:
[Errno 54] Connection reset by peer.
Trying again in 4.00 seconds...
一切看起来都很完美!!有人可以帮助我,我在这里失踪了吗?
答案 0 :(得分:3)
我发现Connection by peer错误,并假设RabbitMQ没有在端口上侦听,或者有防火墙阻止它。事实并非如此。
在Ubuntu 16.04.2 LTS上运行RabbitMQ,由apt:3.5.7-1ubuntu0.16.04.1安装的版本
' netstat -a'的输出对于Rabbit的端口5672看起来像:
$ netstat -a|grep -i amqp
tcp6 0 0 [::]:amqp [::]:* LISTEN
然而,Rabbit实际上正在侦听IPv4地址和IPv6地址。我用netcat验证了这一点。
要从其他计算机访问Rabbit,您必须使用以下命令设置用户帐户:
sudo rabbitmqctl add_user celery celerypassword
sudo rabbitmqctl add_vhost celery_vhost
sudo rabbitmqctl set_user_tags celery celerytag
sudo rabbitmqctl set_permissions -p celery_vhost celery .* .* .*
问题是我的网址。我看起来像:
BROKER_URL = 'amqp://celery:celerypassword@10.0.3.3//'
之后倒数第二个正斜杠是vhost的名称。上面,我给了我的vhost名称celery_vhost。要连接,我需要将URL更改为:
BROKER_URL = 'amqp://celery:celerypassword@10.0.3.3/celery_vhost'
我发现这看着/ var / log / rabbitmq中的Rabbit日志。当我的网址错误时,有一个.log文件包含以下错误:
{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}
答案 1 :(得分:0)
一旦我将代码部署到生产环境并将芹菜升级到3.1.12,问题就解决了。我初步使用3.0.19,但后来升级,没有发现任何问题。感谢您的支持。