2013-04-15 3 views
0

Я пытаюсь запустить сельдерей с IronMQ и кэш в проекте Django на Heroku, но я получаю следующее:сельдерея, Джанго, Heroku - ImportError: Нет модуль с именем задачи

2013-04-14T22:29:17.479887+00:00 app[celeryd.1]: ImportError: No module named tasks 

Что я делаю неправильно? Ниже мой соответствующий код и djcelery и мое приложение оба в установленных приложениях:

ТРЕБОВАНИЙ (Кролик AMQP находится там, потому что я пытался что перед IronMQ):

Django==1.5.1 
amqp==1.0.11 
anyjson==0.3.3 
billiard==2.7.3.27 
boto==2.8.0 
celery==3.0.18 
dj-database-url==0.2.1 
django-celery==3.0.17 
django-storages==1.1.8 
gunicorn==0.17.2 
iron-cache==0.2.0 
iron-celery==0.3.1 
iron-core==1.0.2 
iron-mq==0.4 
iso8601==0.1.4 
kombu==2.5.10 
psycopg2==2.4.6 
python-dateutil==2.1 
pytz==2013b 
requests==1.2.0 
six==1.3.0 
wsgiref==0.1.2 

PROCFILE:

web: gunicorn myapp.wsgi 
celeryd: celery -A tasks worker --loglevel=info -E 

НАСТРОЙКИ:

BROKER_URL = 'ironmq://' 
CELERY_RESULT_BACKEND = 'ironcache://' 

import djcelery 
import iron_celery 

djcelery.setup_loader() 

ЗАДАЧИ:

from celery import task 
@task() 
def batchAdd(result_length, result_amount): 

МНЕНИЕ:

from app import tasks 
r = batchAdd.delay(result_length, result_amount) 
return HttpResponse(r.task_id) 

ТАКЖЕ ПРОБОВАЛ (в ВИДЕ):

from tasks import batchAdd 
r = batchAdd.delay(result_length, result_amount) 
return HttpResponse(r.task_id) 

И ПРОБОВАЛ это также (в ВИДЕ):

from app.tasks import batchAdd 
r = batchAdd.delay(result_length, result_amount) 
return HttpResponse(r.task_id) 

Также вот мой Структура:

projectname 
--app 
----__init__.py 
----__init__.pyc 
----admin.py 
----admin.pyc 
----forms.py 
----forms.pyc 
----models.py 
----models.pyc 
----tasks.py 
----tests.py 
----views.py 
----views.pyc 
--manage.py 
--Procfile 
--projectname 
----__init__.py 
----__init__.pyc 
----settings.py 
----settings.pyc 
----static 
----templates 
----urls.py 
----urls.pyc 
----wsgi.py 
----wsgi.pyc 
--requirements.txt 
+0

'из приложения импорта tasks', где он ломает. Могли бы мы увидеть всю вашу структуру для вашего приложения, пожалуйста? –

+0

Обязательно. Добавлено. – user2270029

ответ

3

Вы пытались загрузить сельдерей через manage.py?

python manage.py celery worker --loglevel=info 
0

Вы не можете просто запустить сельдерей с помощью:

celery -A tasks worker --loglevel=info -E 

сельдерея требует celeryconfig файла с опцией -A. Вы должны запустить вас сельдерей, как описано в djcelery docs.

python manage.py celery worker --loglevel=info 

Также вы должны исправить views.py, как

from app.tasks import batchAdd