2014-07-09 22 views
2

餘設置的rabbitmqserver連接復位和使用以下步驟添加的用戶:芹菜給出由對等

[email protected]*******:/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 ".*" ".*" ".*" 

[email protected]******:/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]/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

您是否打開了端口5672?連接url的'/ phantom'部分是否正確? –

+0

@Eric Workman是的,以確認我做了一個telnet:LM-SJN-00871893:任務uruddarraju $ telnet 10.98.85.92 5672 嘗試10.98.85.92 ... 連接到。 轉義字符是'^]'。 ^] /phantom是我創建的虛擬主機,我在這裏使用這個文檔:[link](http://celery.readthedocs.org/en/latest/getting-started/brokers/rabbitmq。html) – Uday

+0

查看rabbitmq日誌文件,通常位於/ var/log/rabbitmq/ – juanjo

回答

0

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

0

我發現Connection rest by peer錯誤,並假定RabbitMQ沒有在端口上偵聽,或者有阻止它的防火牆。事實並非如此。

在Ubuntu 16.04.2 LTS運行RabbitMQ的,安裝了由易版本:3.5.7-1ubuntu0.16.04.1

用 'netstat -a' 對兔子的端口5672的輸出看起來像:

$ netstat -a|grep -i amqp 
tcp6  0  0 [::]:amqp    [::]:*     LISTEN 

但是,兔子實際上正在監聽IPv4地址和IPv6地址。我用netcat驗證了這一點。

從另一臺機器達到兔子,你必須建立一個用戶帳號的東西,如下面的命令:

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]//' 

之後,倒數第二個斜槓是虛擬主機的名稱。上面,我給我的虛擬主機名爲celery_vhost。爲了連接,我需要將URL更改爲:

BROKER_URL = 'amqp://celery:[email protected]/celery_vhost' 

我發現這看着/ var/log/rabbitmq中的兔子日誌。當我有錯誤的URL時,有一個.log文件包含以下錯誤:

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