芹菜罐头';t连接到rabbitmq-收到意外的方法

芹菜罐头';t连接到rabbitmq-收到意外的方法,rabbitmq,celery,Rabbitmq,Celery,我试图让我的芹菜守护进程在rackspace上的Ubuntu盒上运行,但我在连接芹菜和rabbitmq时遇到了问题。在我的mac电脑上,使用默认的rabbitmq设置(BROKER_URL='amqp://')一切正常,但在生产服务器上,我无法让芹菜与rabbitmq通话 以下是我所做的: $ sudo rabbitmqctl add_user celeryuser celerypassword $ sudo rabbitmqctl add_vhost celeryhost $ sudo rab

我试图让我的芹菜守护进程在rackspace上的Ubuntu盒上运行,但我在连接芹菜和rabbitmq时遇到了问题。在我的mac电脑上,使用默认的rabbitmq设置(BROKER_URL='amqp://')一切正常,但在生产服务器上,我无法让芹菜与rabbitmq通话

以下是我所做的:

$ sudo rabbitmqctl add_user celeryuser celerypassword
$ sudo rabbitmqctl add_vhost celeryhost
$ sudo rabbitmqctl set_permissions -p celeryhost celeryuser ".*" ".*" ".*"
遵循来自

celeryconfig.py
中,我使用上面的配置定义了代理url

BROKER_URL = 'amqp://celeryuser:celerypassword@localhost:5672/celeryhost'
celery_app.py
中,我加载上述配置:

app.config_from_object('proj.celeryconfig')
但是,当我尝试开始芹菜工人时:

celery worker --app=proj.celery_app
我得到以下错误:

-------------- celery@app1 v3.1.13 (Cipater)
---- **** ----- 
--- * ***  * -- Linux-2.6.32-64-server-x86_64-with-Ubuntu-10.04-lucid
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         proj:0x29e9850
- ** ---------- .> transport:   amqp://celeryuser:**@localhost:5672/celeryhost
- ** ---------- .> results:     amqp
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- 
--- ***** ----- [queues]
-------------- .> celery           exchange=celery(direct) key=celery


[2014-09-12 09:28:00,266: ERROR/MainProcess] consumer: Cannot connect to amqp://celeryuser:**@localhost:5672/celeryhost: Couldn't log in: unexpected method received.
Trying again in 2.00 seconds...
我检查了rabbitmq服务器是否正在运行:

$ sudo rabbitmqctl status
结果是:

Status of node rabbit@app1 ...
[{running_applications,[{rabbit,"RabbitMQ","1.7.2"},
                        {mnesia,"MNESIA  CXC 138 12","4.4.12"},
                        {os_mon,"CPO  CXC 138 46","2.2.4"},
                        {sasl,"SASL  CXC 138 11","2.1.8"},
                        {stdlib,"ERTS  CXC 138 10","1.16.4"},
                        {kernel,"ERTS  CXC 138 10","2.13.4"}]},
 {nodes,[rabbit@app1]},
 {running_nodes,[rabbit@app1]}]
...done.

这是因为ubuntu服务器安装了比我在开发机器上安装的旧得多的rabbitmq版本

当我查看rabbitmq工作人员的状态时,我意识到。。该版本说明:

{rabbit,"RabbitMQ","1.7.2"},
但在我的本地

{rabbit,"RabbitMQ","3.3.4"},
我在ubuntu上更新了rabbitmq服务器的版本,并使用post作为指南设置了与上面相同的权限

现在我能够成功地启动生产机器上的芹菜工人