1

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 (Cipater) celeryd 3.1.6-1ubuntu1 rabbitmq-server 3.2.4-1 Python 2.7.6

したがって、デーモン化せずに、セロリはそれ自体を初期化できますが、デーモン (celeryd) を使用すると、どうやら混合ステップでハングします。

一部のフォーラムでは、これは RabbitMQ がディスク容量の上限に達したときに発生する問題であると示唆しています。十分なディスクがあり、RabbitMQ 自身のログは問題を示していません。

4

3 に答える 3

2

Database バックエンドを使用している場合は、セロリに次のオプションを追加すると問題が解決するはずです。

    --without-mingle
于 2016-04-25T05:52:06.517 に答える
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 libs は、機能する他の (おそらくプレーン python?) 実装へのある種のフォールバックを行いました!

于 2014-11-19T07:25:48.257 に答える