Django バージョン 1.4.1 のシステムに celery==3.0.12 と djcelery==3.0.11 をインストールしました。プロジェクトの 1 つでセロリを使用していくつかのタスクを非同期的に処理しようとしましたが、機能していませんでした。テストのために、新しい django プロジェクトを開始し、サンプル タスクadd
を定義して、このようにシェルから呼び出しました。
>>>res = add.delay(3, 5)
を試しましres.status
たが、これらはすべてブロックされています。rabbitmq 管理プラグインを使用して、ブラウザーでrabbitmq キューを監視していました。キューはアイドル状態のままで、メッセージを受け取っていません。res.get()
res.ready()
celery
celery
以下はディレクトリツリーです。
|-- manage.py
|-- new_app
| |-- __init__.py
| |-- __init__.pyc
| |-- models.py
| |-- models.pyc
| |-- tasks.py
| |-- tasks.pyc
| |-- tests.py
| `-- views.py
`-- testapp
|-- __init__.py
|-- __init__.pyc
|-- settings.py
|-- settings.pyc
|-- urls.py
`-- wsgi.py
以下はファイルの内容です
new_app/tasks.py
from celery import task
@task
def add(x ,y):
return x + y
testapp/settings.py
import djcelery
djcelery.setup_loader()
BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
BROKER_HOST = 'localhost'
BROKER_PORT = 5672
BROKER_USER = 'guest'
BROKER_PASSWORD = 'guest'
BROKER_VHOST = '/'
を実行していると、キューpython manage.py celeryd -l INFO
が作成されます。celery
以下はコンソール出力です。
http://dpaste.com/841960/
RabbitMQ のバージョンは 3.0.0 です
の出力rabbitmqctl list_queues
Listing queues ...
celery 0
h4ckb0x.celery.pidbox 0
...done.