ImportError: ningún módulo llamado apio para Celery 3.1 y Python 2.7

Usando Python 2.7 y Celery 3.1.25 en Windows, cuando ejecutamos el trabajo de Celery utilizando

celery -A proj worker -l info 

recibimos el error

 ImportError: No module named celery 

Problema: el trabajador deja de trabajar cuando nosotros

  • cambió el nombre del archivo celeryApp.py de celery.py
  • Cambié la statement de importación en tasks.py de la from .celery import app from celeryApp import app .

¿Por qué está pasando esto? ¿Cómo podemos solucionar el problema?

Estructura de directorios

 /proj/__init__.py /proj/celeryApp.py /proj/tasks.py 

/proj/celeryApp.py

 from __future__ import absolute_import, unicode_literals from celery import Celery app = Celery('tasks', broker='amqp://jack:jack@192.168.1.26:5672//', backend='amqp://', include=['proj.tasks']) if __name__ == '__main__': app.start() 

/proj/tasks.py

 from __future__ import absolute_import, unicode_literals from celeryApp import app @app.task def add(x, y): return x + y 

Al iniciar un trabajo de apio, debe nombrar la aplicación para que coincida con el archivo de python donde está configurado el módulo de apio. Debes comenzar trabajador con

 celery worker -l info -A tasks 

No debes nombrar tu archivo de configuración a celery.py . Esto causará problemas cuando empieces a importar.

 from celery import Celery 

Su archivo debe tener otro nombre pero no celery.py .

También en su archivo de configuración no hay necesidad de agregar

 if __name__ == '__main__': app.start() 

Si va a incluir explícitamente proj.tasks asegúrese de que proj esté en la ruta de acceso de Python o simplemente puede eliminarlo cuando esté iniciando Worker con la aplicación de tasks .