2011-01-24 2 views
5

私は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 

問題は、作業者がタスクを拾うことがないことです。私は設定や何かを欠いていますか?セロリをメッセージキューに向けるにはどうすればよいですか?

+0

インストールされているアプリはありますか?セロリは何かあればログに戻ってきますか?タスクが認識されなかったために.ready()がFalseを返すという一般的な理由は、Celeryは "Unknown task ignored:...."のようなものを言うでしょう。 – Bartek

+0

これを手に入れましたか?私は同じ問題を抱えています – Nathan

+0

残念ながら、私はしませんでした。 – Joe

答えて

0

Kombuはmongo 1.3+でしか動作しませんが、findandmodify機能が必要であることを覚えておいてください。 あなたがubuntuにいる場合、リポジトリの最後のバージョンは1.2ですが、動作しません。

はたぶん、あなたは BROKER_VHOST =「DBNAME」を設定し、それは

0

あなたの設定にこれを追加してください、または労働者が仕事を見つけて、意志することはできませんが動作するかどう

私が投稿保つためにも必要があり静かに失敗する。

CELERY_IMPORTS = ("namespace",) 
0

私は同じ問題がありましたが、私がセロリ2.3.3にアップグレードしたとき、すべてが魅力的でした。

2

同じ問題がありました。医師は、すべてのタスクはセロリに登録する必要がありますが、

import djcelery 
djcelery.setup_loader() 

は正しく機能していないと言います。ですから、まだsettings.pyで

CELERY_IMPORTS = ('YOUR_APP.tasks',) 

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

Django, Celerybeat and Celery with MongoDB as the Broker

関連する問題