proceso cron duplicado - python pm2

proceso cron duplicado - python pm2

Nuestra configuración consta de una aplicación Python Flask implementada en AWS EC2 con escalado automático y utiliza una base de datos MySQL.

También tenemos trabajos programados en un sistema Linux independiente, que se activa cada 10 segundos y llega a los puntos finales de la API en https://api.example.com.
La aplicación se ejecuta bajo pm2.

Recientemente, hemos encontrado problemas con la duplicación de datos derivados de estos trabajos programados. Aunque el trabajo cron está configurado correctamente para ejecutarse cada 10 segundos, observamos casos en los que el mismo trabajo se ejecuta simultáneamente con solo microsegundos de diferencia. Al habilitar los registros de API, confirmamos estos sucesos.

Es desconcertante cómo estos trabajos se ejecutan simultáneamente cuando están programados para acceder a la URL de la API cada 10 segundos. Buscamos asesoramiento sobre métodos o herramientas que puedan ayudarnos a diagnosticar este problema, así como estrategias para evitar dichas ejecuciones simultáneas de trabajos.

Respuesta1

Ejecutar trabajos repetitivos sin verificar si hay una sola copia del trabajo, especialmente en intervalos tan cortos, es una señal directa de problemas.

Lo que puede hacer es medir el tiempo de ejecución de la llamada a la API y establecer la programación para que se realice en el intervalo más grande.Yimplemente la verificación para que solo se ejecute una copia del trabajo. Puede configurar el trabajo para que se omita si ya se está ejecutando y enviar un tipo de alarma para que pueda (nuevamente) reconsiderar el intervalo programado.

Por supuesto, puedes organizar una especie de cola de trabajos omitidos, pero esto depende en gran medida de la naturaleza del trabajo. Y corre el riesgo de tener colas en constante aumento.

información relacionada