2010-10-13 18 views
8

Tengo una tarea que se ejecuta en una instancia de Celerybeat. Cuando se ejecuta esa tarea, a veces modifica un objeto modelo, que debe disparar una señal post/pre_save, pero no lo hace. La señal no está sucediendo. Me imagino que esto se debe a que las señales de Django son sincrónicas, mientras que el apio lo hace en un servidor diferente en un hilo diferente en un universo diferente. ¿Hay una manera simple de obtener esas señales para disparar mientras corren en apio?Django Señales en el apio

Respuesta

16

Las señales Django son locales, lo que significa que el manejador de señales también debe estar registrado en el trabajador.

Si su controlador de señal está conectado, p. models.py, luego debe importar ese en tasks.py para asegurarse de que también esté conectado en el trabajador.

Alternativamente se puede especificar módulos adicionales que el trabajador debe importar usando el ajuste CELERY_IMPORTS:

CELERY_IMPORTS = ("myapp.handlers",) 

o el argumento -I a celeryd.

$ python manage.py celeryd -I myapp.handlers 
Cuestiones relacionadas