Elige dónde vive el trabajo
- Dentro de tu aplicación existente: lo más sencillo, si el trabajo es ligero y comparte código con ella.
- En una aplicación de segundo plano separada: mejor si el trabajo es pesado o si no quieres que compita con las peticiones por la memoria. Se reinicia y escala por su cuenta.
Node.js
index.js
Python
main.py
BlockingScheduler mantiene vivo el proceso. Con un script que termina después de programar, el proceso sale con código 0
y no se reinicia.
Puntos a tener en cuenta
Define siempre la zona horaria
Define siempre la zona horaria
No dependas de la zona horaria del reloj del contenedor: pasa la zona horaria al planificador de forma explícita, como en los ejemplos.
Haz que los trabajos sean seguros de ejecutar dos veces
Haz que los trabajos sean seguros de ejecutar dos veces
Un reinicio durante un trabajo significa que puede volver a ejecutarse. Registra lo que ya se procesó, o diseña el trabajo para
que una segunda ejecución no cambie nada.
Captura los errores dentro del trabajo
Captura los errores dentro del trabajo
Un error no controlado puede tumbar todo el proceso, y 5 caídas en 10 minutos pausan el reinicio automático durante 24 horas.
Envuelve el cuerpo del trabajo en
try/catch y registra el fallo.Registra cada ejecución
Registra cada ejecución
Imprime una línea cuando un trabajo empieza y cuando termina; la pestaña Logs es donde comprobarás que se ejecutó. En Python,
usa
flush=True para que la línea aparezca de inmediato.