2013-03-01 23 views
7

Stworzyłem aplikację django-seler jak w tutorialu pod adresem:aplikacja Django Seler - No moduł nazwany błąd seler

http://docs.celeryproject.org/en/master/django/first-steps-with-django.html

wszystko działa poprawnie, gdy uruchomię go bez parametru aplikacji jak w:

$ python manage.py celery worker -l info 

ale nie mogę go uruchomić w ogóle z parametrem aplikacji, na przykład:

$ python manage.py celery worker -A myapp -l info 

gdzie MojaApl to nazwa nadana do wniosku, kiedy stworzył projekt z:

$ python manage.py startapp myapp 

błędu, że jestem coraz to:

ImportError: No module named celery 

Czy ktoś wie dlaczego tak się dzieje i jak rozwiązać to?

+3

Argument '-A' jest dla aplikacji selera, nie dla aplikacji Django ... Nie są one obecnie używane przez django-selera. – asksol

+0

ah, nie wiedziałem o tym. Dziękuję za odpowiedź. Ale jak mogę to uruchomić? – Clara

+0

Seler 3.1 będzie obsługiwał django od zera (ale nie ma wszystkich funkcji od django-selekcji, np.g nie ma backend wyniku bazy danych i nie ma okresowego harmonogramu zadań bazy danych, ale nadal możesz używać djcelery, aby to uzyskać) – asksol

Odpowiedz

14

Edit kwietnia 2014:

selera Docs zostały zaktualizowane do 3,1; poniżej rozwiązanie jest już nieaktualna, zobacz:

http://docs.celeryproject.org/en/master/django/first-steps-with-django.html


Domyślnie wyszukiwania seler dla modułu o nazwie celery.py znaleźć swoją konfigurację. Można uzyskać seler używać innej nazwy niż celery.py przez określić it on the app argument - w tym przykładzie, będziemy szukać selera config w settings.py:

python manage.py celery worker --app=myapp.settings 

Podczas korzystania django-celery można użyć powyższej rozmowy, aby rozpocząć seler, czy jak pierwotnie zrobił i stworzyć celery.py w moim pakiecie aplikacji myapp:

from settings import celery 

My Django settings.py zawiera normalną seler config:

from celery import Celery 

celery = Celery(broker="amqp://guest:[email protected]:5672//") 

celery.conf.update(
    CELERY_DEFAULT_QUEUE = "myapp", 
    CELERY_DEFAULT_EXCHANGE = "myapp", 
    CELERY_DEFAULT_EXCHANGE_TYPE = "direct", 
    CELERY_DEFAULT_ROUTING_KEY = "myapp", 
) 

Następnie uruchom pracownika seler takiego:

python manage.py celery worker --app=myapp 

Tak dla jasności, oto moje pełne struktury aplikacji:

myproject/ 
    manage.py 
    myapp/ 
     __init__.py 
     settings.py 
     celery.py 
+2

Głosuję +1, ponieważ pomogło mi to uświadomić sobie, że konfiguracja selera jest odrobiną czarnej magii i muszę zachować ostrożność. Ale powinieneś edytować swoją odpowiedź, ponieważ jest niespójna. Dlaczego masz plik celery.py, jeśli konfigurujesz seler w settings.py? A może chciałeś powiedzieć, że konfigurujesz go w selekcji? – Milimetric

+0

Właśnie zaktualizowałem odpowiedź, opartą na lepszym zrozumieniu Mam teraz :) @Milimetric Mam plik selery.py, który importuje settings.py, ponieważ to jest to, czego szuka seler. – mafrosis

+0

Jeśli twój kod działa, a jego kod źródłowy jest otwarty, link byłby świetny. Dziękuję za edycję. – Milimetric

0

Pamiętaj próbujesz uruchomić pracownika selera z katalog, który ma dostęp do modułu selera. W moim przypadku próbowałem uruchomić pracownika z katalogu aplikacji, a nie projektu.