2011-06-18 28 views
0

私は私のdjangoプロジェクトで長いタスクを実行する必要があります。ブローカーとしてredisとセロリを使用することを望んだ。インストール済みRedisのは、実行されます。djangoプロジェクトでのセロリの非同期タスク。使い方?

サーバーは、今私はジャンゴ・セロリをインストールしたよりポート6379

上の接続を受け入れる準備ができている、設定します。

import djcelery 
djcelery.setup_loader() 
BROKER_HOST = "localhost" 
BROKER_PORT = 6379 #redis 
BROKER_USER = "guest" 
BROKER_PASSWORD = "guest" 
BROKER_VHOST = "/" 

し、それを実行します。

python manage.py celeryd -l DEBUG 
[...] 
[2011-06-18 10:31:37,913: DEBUG/MainProcess] Starting thread Timer... 
[2011-06-18 10:31:37,914: DEBUG/MainProcess] Starting thread Consumer... 
[2011-06-18 10:31:37,914: WARNING/MainProcess] [email protected] has started. 
[2011-06-18 10:31:37,914: DEBUG/MainProcess] Consumer: Re-establishing connection to the broker... 

私のサンプルタスクは次のようになります。

from celery.decorators import task 
@task() 
def add(x, y): 
    return x + y 

今私は貝にそれを実行しよう:

In [3]: from message.tasks import add 
In [4]: r=add.delay(2, 5)  

、それは非常に長く待つとトレースバックhttp://dpaste.com/555939/をレンダリングします。何ができますか?多分私は何かが恋しいですか?

答えて

2

BROKER_BACKENDの設定がありません。ここでのRedisを使用するための例の設定です:

import djcelery 
djcelery.setup_loader() 

CELERY_RESULT_BACKEND = 'database' 

BROKER_BACKEND = 'redis' 
BROKER_HOST = 'localhost' 
BROKER_PORT = 6379 
BROKER_VHOST = '1' 
0

これは何であるか分かりませんが、RabbitMQはCeleryとDjangoの推奨ブローカーです。私はそれを実行しており、それは魅力のように動作します。なぜそれを与えることはありませんか?

+0

問題は、私のようにシェルを実行したということであった: >のpython manage.pyシェル – greg

+0

ああ、はい、あなただけのDjangoのアプリでファイルからセロリを実行することができます確かに、それに気づいたはずです:) – fijter

関連する問題