私はMongoDBをCelery(Djangoアプリケーション)のメッセージキューとして使用しようとしています。現在開発中のCelery(2.2.0rc2)のバージョンではこれを行うことになっていますが、私が作成しているタスクを拾う作業者はいないようです。CeleryのメッセージキューとしてMongoDBを使用する
バージョン: セロリv2.2.0rc3
のMongoDB 1.6.5
1.9 pymongoジャンゴ・セロリ私の設定で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()
私は」 test tasksファイルを次のように作成しました。
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
問題は、作業者がタスクを拾うことがないことです。私は設定や何かを欠いていますか?セロリをメッセージキューに向けるにはどうすればよいですか?
インストールされているアプリはありますか?セロリは何かあればログに戻ってきますか?タスクが認識されなかったために.ready()がFalseを返すという一般的な理由は、Celeryは "Unknown task ignored:...."のようなものを言うでしょう。 – Bartek
これを手に入れましたか?私は同じ問題を抱えています – Nathan
残念ながら、私はしませんでした。 – Joe