与RabbitMQ的芹菜挂在“混合:寻找邻居”,但普通的芹菜工作

时间:2014-11-18 20:32:45

标签: python rabbitmq celery celeryd

我用celeryd和RabbitMQ把头撞到了墙上。

本教程中的这个例子工作得很好:

from celery import Celery

app = Celery('tasks', backend='amqp', broker='amqp://')

@app.task
def add(x, y):
return x + y

我跑:

celery -A tasks worker --loglevel=info

我得到了输出:

[2014-11-18 19:47:58,874: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672//
[2014-11-18 19:47:58,881: INFO/MainProcess] mingle: searching for neighbors
[2014-11-18 19:47:59,889: INFO/MainProcess] mingle: all alone
[2014-11-18 19:47:59,896: WARNING/MainProcess] celery@vagrant-ubuntu-trusty-64 ready.

我现在可以从python repl运行任务并获得结果。

但是当我安装celeryd时,这个过程就会挂起来:

[2014-11-18 20:18:33,893: INFO/MainProcess] mingle: searching for neighbors

此后不显示输出。

我的/ etc / default / celeryd看起来像这样:

ENABLED="true"
CELERYD_NODES="w1"
CELERYD_CHDIR="/home/myusername/src/celery-test"
CELERYD_OPTS="--time-limit=300 --concurrency=8"
CELERY_CONFIG_MODULE="celeryconfig"
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_USER="celery"
CELERYD_GROUP="celery"

我使用这些版本:

Ubuntu 14.04 芹菜3.1.16(密码) 芹菜3.1.6-1ubuntu1 rabbitmq-server 3.2.4-1 Python 2.7.6

所以没有守护进程,芹菜可以自己初始化,但守护进程(celeryd)显然会挂在混合步骤上。

有些论坛认为这是RabbitMQ达到磁盘空间限制的问题。我有足够的磁盘,RabbitMQ自己的日志没有任何问题。

3 个答案:

答案 0 :(得分:1)

我从这条消息中得到了预感:

[2014-11-18 16:20:17,216: WARNING/MainProcess] /usr/local/lib/python2.7/dist-packages/kombu/transport/librabbitmq.py:163: UserWarning:
    librabbitmq version too old to detect RabbitMQ version information
    so make sure you are using librabbitmq 1.5 when using rabbitmq > 3.3

  warnings.warn(UserWarning(W_VERSION))

所以出于某种原因,我有librabbitmq1 apt包,它太旧了。

事实证明问题是librabbitmq1包。我删除它:

sudo apt-get remove librabbitmq1

并且python Celery / RabbitMQ库对某些其他(也许是普通的python?)实现做了某种后退工作!

答案 1 :(得分:1)

如果您使用数据库后端,则向芹菜添加以下选项可以解决问题:

    --without-mingle

答案 2 :(得分:-1)

检查您的可用磁盘空间。 RabbitMQ默认需要1Gb的可用空间。