2011-01-21 8 views
16

/home/myuser/mysite-env/lib/python2.6/site-packages/celery/loaders/default.py:53: NotConfigured: Nie celeryconfig.py moduł znaleziony! Upewnij się, że numer istnieje i jest dostępny dla Pythona.
NotConfigured)Dlaczego nie mogę znaleźć mojego pliku konfiguracyjnego selera?

nawet zdefiniowane w moim/etc/profile, a także w "aktywować" moje wirtualne środowisko jest. Ale nie czyta tego.

+1

Głupie pytanie ... (bo robiłem to), gdy wykonuje python jest uruchomiony poprawną wersję. Pracowałem na systemach z 2 wersjami pythona ... nie pytaj. –

Odpowiedz

2

Upewnij się, że masz celeryconfig.py w tym samym miejscu, w którym używasz "selera" lub w inny sposób upewnij się, że jest on dostępny na ścieżce Python.

20

Miałem podobny problem z moim modułem zadań. Proste rozwiązanie tego problemu w pakiecie w prostym pakiecie zawierało

+0

Zgodnie z zaleceniem z [Zalecenia Celery dla Django] (http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html), 'os.environ.setdefault ('DJANGO_SETTINGS_MODULE', ' proj.settings ")' w pliku konfiguracyjnym selera zanim 'app = Seler ('tasks')' zostanie wywołany powinien działać dobrze, szczególnie jeśli chcesz później dynamicznie aktualizować swój plik ustawień. – cloudrave

2

można obejść ten problem ze środowiskiem ... lub użyj --config: wymaga

  1. ścieżkę względem CELERY_CHDIR z/etc/defaults/celeryd
  2. nazwę moduł Pythona, nie nazwa pliku.

Ten komunikat o błędzie może prawdopodobnie wykorzystywać te dwa fakty.

7

Teraz w Seler 4.1 można rozwiązać ten problem przez ten kod (najprostszy sposób):

import celeryconfig 

from celery import Celery 

app = Celery() 
app.config_from_object(celeryconfig) 

na przykład małą celeryconfig.py:


Również bardzo prosty sposób:

from celery import Celery 

app = Celery('tasks') 

app.conf.update(
    result_expires=60, 
    task_acks_late=True, 
    broker_url='pyamqp://', 
    result_backend='redis://localhost' 
) 

lub za pomocą klasy konfiguracja/PRZEDMIOT:

from celery import Celery 

app = Celery() 

class Config: 
    enable_utc = True 
    timezone = 'Europe/London' 

app.config_from_object(Config) 
# or using the fully qualified name of the object: 
# app.config_from_object('module:Config') 

Albo jak wspomniano przez ustawienie CELERY_CONFIG_MODULE

import os 
from celery import Celery 

#: Set default configuration module name 
os.environ.setdefault('CELERY_CONFIG_MODULE', 'celeryconfig') 

app = Celery() 
app.config_from_envvar('CELERY_CONFIG_MODULE') 

również zobaczyć:

+0

Jak to zrobić, gdy masz tylko nazwę pliku? /path/to/filename.py – 010110110101

+0

@ 010110110101 Pierwsza opcja wydaje się być odpowiednia dla Ciebie. Zobacz w odpowiedzi dodałem wyjaśnienie dla pierwszej opcji. Jeśli nie jest jasne, jestem gotów pomóc. –