ここでこのリストを調べていますが、うまくいきません:
http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
だから私がしたことは:1)セロリモジュールをダウンロードし、それらを私のmanage.pyとwsgi.pyに追加しました:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import os, sys
from ConfigParser import RawConfigParser
config = RawConfigParser()
abspath = os.path.abspath(os.path.dirname(__file__))
config.read(abspath+'/subfolder/settings.ini')
homedir = config.get('paths', 'libspath')
projectspath = config.get('paths', 'projectspath')
path = [
'/Django-1.4.5/',
'/South-0.7.6',
'/python-openid-master',#07.05.2013 checkout from https://github.com/openid/python-openid
'/mbi-django-rosetta-eca151e',
'/phonenumbers-5.2b1',
'/django-phonenumber-field-develop',
'/django-openid-auth-0.5',
'/celery-3.0.19',
'/django-celery-3.0.17',
'/kombu-2.5.11',
'/billiard-2.7.3.28',
'/anyjson-0.3.3',
'/amqp-1.0.12'
]
for item in path:
module = homedir+item
if module not in sys.path:
sys.path.append(module)
2)rabbitmqをインストールしました 3)settings.pyで設定を行います:
INSTALLED_APPS = (
---
'djcelery',
)
そして最後に:
BROKER_URL = 'amqp://guest:guest@localhost:5672/'
import djcelery
djcelery.setup_loader()
4) python manage.py syncdb を実行しました
5) mod_wsgi を使用しているので、これも wsgi.py に追加しました (以前に示したコードに加えて)
import djcelery
djcelery.setup_loader()
6) コアアプリで tasks.py を作成しました:
import logging, subprocess
logger = logging.getLogger('debugger')
from django.conf import settings
from celery import task
@task
def runfunc(funcname, refno):
x = 'nothing to see here'
7)私は実行します: python manage.py celery worker --loglevel=info そして、そのすべてが良いことを意味するたくさんのものを取得します:P.
しかし、タスクを実行するはずのdjangoビューに行くと、次のようになります:
cannot import name task
Request Method: GET
Request URL: http://localhost/url/that/triggers/task/
Django Version: 1.4.5
Exception Type: ImportError
Exception Value:
cannot import name task
Exception Location: /path/to/project/core/tasks.py in <module>, line 6
manage.py シェルに移動し、セロリのインポート タスクから入力すると、問題なく動作します。core.tasks から関数をインポートすると、まったく同じエラー メッセージが表示されます。
誰か説明してくれませんか?
アラン