2011-01-21 4 views
16

/home/myuser/mysite-env/lib/python2.6/site-packages/celery/loaders/default.py:53: NotConfigured: No celeryconfig.py módulo encontrado! Asegúrese de que existe y está disponible para Python.
NotConfigured)¿Por qué no puede encontrar mi archivo de configuración de apio?

siquiera la he definido en/etc/profile y también en mi entorno virtual "activar". Pero no lo está leyendo.

+1

Pregunta estúpida ... (porque he hecho esto) cuando se ejecuta pitón que está ejecutando la versión correcta. Trabajé en sistemas con 2 versiones de Python ... no preguntes. –

Respuesta

2

Asegúrate de tener aplery.fig.py en la misma ubicación en la que estás ejecutando 'apical' o asegúrate de que esté disponible en la ruta de Python.

20

Tuve un problema similar con mi módulo de tareas. Un simple

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

en __init__.py de mi paquete resuelto este problema.

+0

Según lo recomendado en [las recomendaciones de Celery para Django] (http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html), 'os.environ.setdefault ('DJANGO_SETTINGS_MODULE', ' proj.settings ') 'en el archivo de configuración de apio antes de que se llame a' app = Celery (' tasks ') 'debería funcionar bien, especialmente si desea actualizar su archivo de configuración dinámicamente más adelante. – cloudrave

2

puede solucionar esto con el medio ambiente ... o, utilizar --config: requiere

  1. una ruta relativa a CELERY_CHDIR de/etc/defaults/celeryd
  2. un nombre de módulo pitón, no es un nombre de archivo

El mensaje de error probablemente podría utilizar estos dos hechos.

7

Ahora en Apio 4.1 se puede resolver ese problema mediante ese código (la forma más fácil):

import celeryconfig 

from celery import Celery 

app = Celery() 
app.config_from_object(celeryconfig) 

Por ejemplo pequeña celeryconfig.py:


también de forma muy sencilla:

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 el uso de una clase de configuración/objeto:

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 cómo fue mencionado por el establecimiento 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') 

Véase también:

+0

¿Cómo hacerlo cuando solo tienes el nombre del archivo? /path/to/filename.py – 010110110101

+0

@ 010110110101 La primera opción parece ser la adecuada para usted. Ver en la respuesta he agregado algunas explicaciones para la primera opción. Si no está claro, estoy listo para ayudar. –

Cuestiones relacionadas