芹菜通过p重置连接

2024-04-25 05:06:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我设置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...

一切看起来都很完美!!有人能帮我什么我在这里失踪?


Tags: importappamqpserverlibusrrabbitmqsudo
2条回答

我通过对等错误找到了连接rest,并假设RabbitMQ没有监听端口,或者有防火墙阻止它。事实并非如此。

在Ubuntu 16.04.2lts上运行RabbitMQ,apt安装的版本:3.5.7-1ubuntu0.16.04.1

Rabbit端口5672的“netstat-a”输出如下:

$ 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的名称。上面,我给我的主机取名芹菜主机。要连接,我需要将URL更改为:

BROKER_URL = 'amqp://celery:celerypassword@10.0.3.3/celery_vhost'

我通过查看Rabbit的/var/log/rabbitmq日志发现了这一点。当我使用错误的URL时,有一个.log文件包含以下错误:

{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}

一旦我将代码部署到生产环境中,并将芹菜升级到3.1.12,问题就解决了。我最初使用3.0.19,但后来升级,没有发现任何问题。谢谢你的支持。

相关问题 更多 >