Reprogramación de trabajos cron en nodejs en el reinicio del servidor

votos
31

Tengo la aplicación del nodo js donde un usuario puede programar 4-5 trabajos cron diferentes. Un usuario selecciona una fecha_inicio, una fecha_fin, una hora_inicio y una hora_fin, y en consecuencia, se programan las funciones cron y se generan algunas campañas para conectar con los clientes potenciales (u otros usuarios). Estoy usando el paquete npm node-schedule para lograr la ejecución deseada de un trabajo cron, pero el problema surge si mi aplicación web se bloquea en el medio

Según la documentación oficial de node-schedule,

Tenga en cuenta que la programación de nodos está diseñada para la programación en proceso, es decir, los trabajos programados sólo se dispararán mientras su script se esté ejecutando, y la programación desaparecerá cuando se complete la ejecución.

La solución que se me ocurre para resolver esto es llamar a las funciones cron usando el archivo server.js que se reinicia cada vez que se ejecuta el script del servidor. Pero no puedo resolver algunos de los siguientes problemas:

  1. El planificador es una función individual, no específica de una campaña, así que, ¿cómo sabrá la aplicación qué función cronológica debe iniciar si no se ha completado?
  2. Un programador es una función única, que se llamará cada vez que se reinicie el servidor. Si se crean 6 instancias de un servidor, será llamado 6 veces

Supongamos que mi planificador se debe ejecutar entre el 28 de mayo de 11:00 AM y el 31 de mayo de 12:00 AM. El programador comienza su trabajo y algunas de las campañas se ejecutan en el medio. Si mi servidor se cae el 30 de mayo, ¿cómo puedo recoger el resto de las fechas y campañas y completarlas desde allí?

¿Así que me preocupa cómo programar o manejar las funciones del trabajo de cron para las campañas? Si alguna de las tareas cron de la campaña se bloquea en el medio si el servidor se detiene, ¿cómo debería ser capaz de reprogramar o ejecutar esa función cron a partir de la hora o fecha que ha quedado de ella?

No tengo mucha experiencia con los trabajos cron, esperando algunas soluciones prácticas.

Publicado el 28/05/2020 a las 19:49
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more