簡體   English   中英

Celery提供對等連接重置

[英]Celery gives connection reset by peer

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

一切看起來都很完美! 有人可以幫我我在這里想念的嗎?

我發現對等錯誤導致連接中斷,並假定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'}}

一旦將代碼部署到生產中並將芹菜升級到3.1.12,問題就解決了。 我最初使用3.0.19,但后來進行了升級,但沒有發現任何問題。 感謝您的支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM