es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se están enviando mensajes mediante celery beat (usando django-celery-beat)

Estoy en proceso de actualizar a celery 5.x para un proyecto de Django. Dado que ya no hay un decorador @scheduled_task, cambié todos esos por @shared_task y escribí código para crear instancias de CrontabSchedule y asociar instancias de PeriodicTask con ellas para cada tarea que deba ejecutarse según una programación. Estoy invocando eso desde un receptor de señales beat_init. Estoy ejecutando celery worker & beat como procesos separados.

Estoy registrando información desde la función que configura las instancias de CrontabSchedule y PeriodicTask, y veo que la salida de registro proviene del proceso de celery beat. Inmediatamente después de eso, veo el mensaje DatabaseScheduler: Schedule changed. Eso es todo lo esperado y bueno.

Sin embargo, posteriormente, celery beat simplemente se queda sin hacer nada. beat nunca envía ningún mensaje y, como resultado, celery worker nunca ejecuta ninguna tarea programada.

En django-admin shell_plus, PeriodicTask.objects.all() me muestra muchas tareas programadas con horarios que se ven como deberían. Aquí hay un ejemplo de la salida que debería ejecutarse una vez por minuto, todos los días:

<PeriodicTask: dhnetwork.tasks.send_queued_mail: {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59} {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23} * {1,2,3,4,5,6,7,8,9,10,11,12} {0,1,2,3,4,5,6} (m/h/dM/MY/d) America/Los_Angeles>

¿Alguna idea de qué podría estar haciendo mal o cómo diagnosticar el problema?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el proceso de celery beat no está enviando ningún mensaje, lo que impide que el trabajador de celery ejecute las tareas programadas.

    Un posible problema podría ser que el proceso de celery beat no esté configurado o ejecutándose correctamente. Verifique nuevamente para asegurarse de que el proceso de celery beat esté en ejecución y configurado correctamente en el archivo de configuración.

    Otro posible problema podría ser que el horario de beat no se esté cargando correctamente. Intente reiniciar el proceso de beat para ver si el horario se carga correctamente.

    Si ninguna de las soluciones anteriores funciona, puede ser útil revisar los registros de celery beat en busca de mensajes de error o pistas sobre por qué el proceso de beat no está funcionando correctamente.

Comments are closed.