Celery提供对等连接重置

 帅哥刘常胜 发布于 2023-01-04 13:54

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

一切看起来都很完美!有人可以帮我我在这里想念的吗?

1 个回答
  • 我发现对等错误导致连接中断,并假定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:celerypassword@10.0.3.3//'
    

    在此之后的倒数第二个斜杠是虚拟主机的名称。上面,我给我的虚拟主机起了名字celery_vhost。要进行连接,我需要将URL更改为:

    BROKER_URL = 'amqp://celery:celerypassword@10.0.3.3/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'}}
    

    2023-01-04 13:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有