0

djangoプロジェクトで長いタスクを実行する必要があります。ブローカーとしてredisでセロリを使用することを望みました。インストールされたredisの実行:

これで、サーバーはポート6379で接続を受け入れる準備ができました。

django-celeryをインストールするよりも、以下を構成します。

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] celery@greg... 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)    

非常に長く待機し、Tracebackhttp://dpaste.com/555939/をレンダリングします。それは何でしょうか?多分私は何かが恋しいですか?

4

2 に答える 2

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'
于 2011-06-19T09:55:37.870 に答える
0

これが何であるかはわかりませんが、RabbitMQがCeleryとDjangoの推奨ブローカーであることは知っています。私はそれを実行していて、それは魅力のように機能します。それを試してみませんか?

于 2011-06-18T17:14:28.893 に答える