5

(Djangoアプリで)CeleryのメッセージキューとしてMongoDBを使用しようとしています。現在の開発バージョンのCelery(2.2.0rc2)でこれを実行できるようになっていますが、作成中のタスクをワーカーに取得させることができないようです。

バージョン:celery v2.2.0rc3
mongodb 1.6.5
pymongo 1.9
django-celery 2.2.0rc2

私の設定では、私は持っています:

CELERY_RESULT_BACKEND = "mongodb"
CELERY_MONGODB_BACKEND_SETTINGS = {
    # Shouldn't need these - defaults are correct.
    "host": "localhost",
    "port": 27017,
    "database": "celery",
    "taskmeta_collection": "messages",
}

BROKER_BACKEND = 'mongodb'
BROKER_HOST = "localhost"
BROKER_PORT = 27017
BROKER_USER = ""
BROKER_PASSWORD = ""
BROKER_VHOST = ""

import djcelery
djcelery.setup_loader()

次のようにテストtasks.pyファイルを作成しました。

from celery.decorators import task

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

バックグラウンドでcelerydを起動すると、正常に起動しているように見えます。次に、Pythonシェルを開いて、次のコマンドを実行します。

>>> from myapp.tasks import add
>>> result = add.delay(5,5)
>>> result
<AsyncResult: 7174368d-288b-4abe-a6d7-aeba987fa886>
>>> result.ready()
False

問題は、作業者がタスクを引き受けることがないことです。設定などが足りませんか?セロリをメッセージキューにポイントするにはどうすればよいですか?

4

4 に答える 4

2

これと同じ問題がありました。ドキュメントには、すべてのタスクを呼び出してCeleryに登録する必要があると書かれていますが、

import djcelery
djcelery.setup_loader()

正常に動作していませんでした。そのため、私たちはまだ

CELERY_IMPORTS = ('YOUR_APP.tasks',) 

settings.py で設定します。また、Celery は最初の起動時にタスクを登録する必要があるため、新しいタスクを追加する場合は必ず Celery を再起動してください。

MongoDB をブローカーとして使用する Django、Celerybeat、Celery

于 2011-11-23T18:26:04.040 に答える
0

Kombuは、findandmodify機能が必要なため、mongo1.3以降でのみ機能することに注意してください。あなたがubuntuを使用している場合、リポジトリの最後のバージョンは1.2ですが、機能しません。

たぶん、BROKER_VHOST="dbname"も設定する必要があります

それがうまくいくなら私を投稿してください

于 2011-03-01T13:17:01.627 に答える
0

私は同じ問題を抱えていましたが、セロリ 2.3.3 にアップグレードすると、すべてがうまくいきました。

于 2011-10-09T18:29:09.577 に答える
0

これを必ず設定に追加してください。そうしないと、ワーカーはタスクを見つけることができず、黙って失敗します。

CELERY_IMPORTS = ("namespace", )
于 2011-05-18T20:25:36.083 に答える