Celery 使连接由对等方重置

2024-04-06

我设置了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:[email protected] /cdn-cgi/l/email-protection/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 

I get

[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...

一切看起来都很完美!有人可以帮助我这里缺少什么吗?


我发现 Connection Rest by Peer 错误,并假设 RabbitMQ 没有侦听该端口或有防火墙阻止它。事实并非如此。

在 Ubuntu 16.04.2 LTS 上运行 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:[email protected] /cdn-cgi/l/email-protection//'

倒数第二个正斜杠之后是虚拟主机的名称。上面,我将我的虚拟主机命名为 celery_vhost。要连接,我需要将 URL 更改为:

BROKER_URL = 'amqp://celery:[email protected] /cdn-cgi/l/email-protection/celery_vhost'

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

{handshake_error,opening,0,
{amqp_error,access_refused,
"access to vhost '/' refused for user 'celery'",
'connection.open'}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Celery 使连接由对等方重置 的相关文章

随机推荐