2011-01-21 1 views
16

/home/myuser/mysite-env/lib/python2.6/site-packages/celery/loaders/default.py:53: notconfigured: No celeryconfig.py modulo trovato! Assicurati che esista ed è disponibile per Python.
notconfigured)Perché non riesce a trovare il mio file di configurazione di sedano?

ho anche definito nel mio/etc/profile e anche nel mio ambiente virtuale "Attiva". Ma non lo sta leggendo.

+1

Domanda stupida ... (perché ho fatto questo) quando pitone esegue è in esecuzione la versione corretta. Ho lavorato su sistemi con 2 versioni di Python ... non chiedere. –

risposta

2

Assicurarsi di avere celeryconfig.py nella stessa posizione in cui si esegue 'celeryd' o comunque assicurarsi che sia disponibile sul percorso Python.

20

Ho avuto un problema simile con il mio modulo di attività. Un semplice

# celery config is in a non-standard location 
import os 
os.environ['CELERY_CONFIG_MODULE'] = 'mypackage.celeryconfig' 

nel mio pacchetto __init__.py risolto questo problema.

+0

Come raccomandato in [Consigli di Celery per Django] (http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html), 'os.environ.setdefault ('DJANGO_SETTINGS_MODULE', ' proj.settings ') 'nel file di configurazione di sedici prima che venga chiamato' app = Celery (' tasks ') 'dovrebbe funzionare bene, specialmente se si desidera aggiornare il file delle impostazioni in modo dinamico successivamente. – cloudrave

2

si può ovviare a questo con l'ambiente ... o, utilizzare --config: richiede

  1. un percorso relativo alla CELERY_CHDIR da/etc/default/celeryd
  2. un nome di modulo python, non un nome di file.

Il messaggio di errore potrebbe probabilmente utilizzare questi due fatti.

7

Ora nel sedano 4.1 si può risolvere il problema che il codice (il modo più semplice):

import celeryconfig 

from celery import Celery 

app = Celery() 
app.config_from_object(celeryconfig) 

Per esempio piccolo celeryconfig.py:


anche modo molto semplice:

from celery import Celery 

app = Celery('tasks') 

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

o utilizzando una classe di configurazione/oggetto:

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') 

O come è stato menzionato impostando 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') 

Vedi anche:

+0

Come fare quando si ha solo il nome del file? /path/to/filename.py – 010110110101

+0

@ 010110110101 La prima opzione sembra essere giusta per te. Vedi nella risposta ho aggiunto qualche spiegazione per la prima opzione. Se non è chiaro sono pronto ad aiutare. –