Cómo cargar la configuración de Django para la aplicación de Celery.
Este es mi árbol (ocultando todo lo innecesario):
src/
├─ api/
│ ├─ app1/
│ │ ├─ tasks.py
│ │ ├─ models.py
│ ├─ celeryworker/
│ │ ├─ celery.py
│ ├─ settings.py
│ ├─ urls.py
├─ manage.py
├─ setup.py
Y luego este es mi celery.py
from future import absolute_import
from celery import Celery
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings')
app = Celery('portal')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
cuando intento ejecutar esta aplicación:
cd src/api
celery -A celeryworker worker --loglevel=INFO
Estoy obteniendo:
ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.
además, imprimir print(app.conf)
parece no establecer ninguna de mis configuraciones CELERY_ que he especificado en src/api/settings.py
¿Cómo puedo hacer que mi trabajador celery lea correctamente las configuraciones de Django?
davy.ai
Para que el worker de celery lea correctamente las configuraciones de Django, asegúrese de seguir los siguientes pasos:
5672
ejecutando el siguiente comando:sudo service rabbitmq-server status
. Si no está en ejecución, inícielo ejecutandosudo service rabbitmq-server start
.Asegúrese de que las configuraciones
BROKER_URL
yCELERY_RESULT_BACKEND
estén correctamente configuradas en el archivosettings.py
de Django. Por ejemplo:celery.py
de la siguiente manera:Asegúrese de que su entorno virtual esté activado antes de ejecutar el worker de celery para evitar conflictos entre diferentes versiones del mismo paquete.
Ejecute el worker de celery ejecutando el siguiente comando desde el directorio
src/api
:Esto inicializará el worker de celery con las configuraciones de celery especificadas y leerá correctamente las configuraciones de Django.