Ejecutar tareas periódicas en Node con node-cron

E

¿Qué es Cron?

Cron es una utilidad de programación que se ejecuta como un proceso demonio en el fondo de sistemas similares a Unix. Es extremadamente popular para ejecutar tareas periódicas, que pueden ser cualquier cosa que elija, como iniciar una copia de seguridad o borrar datos de una base de datos.

Puede agregar tareas a Cron a través de la línea de comando usando el crontab -e mando. Utilizando la -e El argumento lo pondrá en modo de edición y abrirá su editor predeterminado donde puede agregar el trabajo. La sintaxis de un comando se ve así:

1 2 3 4 5 [USER] /path/to/command arg1 arg2

Los números del 1 al 5 representan diferentes incrementos de tiempo que puede especificar para programar el trabajo. Más detalles a continuación:

  • 1: minuto (0-59)
  • 2: Hora (0-23)
  • 3: Día (0-31)
  • 4: mes (0-12, donde 12 es diciembre)
  • 5: día de la semana (0-7, donde domingo es 0 o 7)

los USER El argumento es opcional y se usa para especificar con qué usuario se debe ejecutar el comando. También puede especificar el usuario mediante el -u opción. Hay muchas más opciones y variaciones de los parámetros de programación, pero no entraremos en más detalles aquí. Hay muchos otros recursos en Internet donde puede encontrar estos detalles.

Aquí hay un ejemplo simple de cómo programar un script para que lo ejecute Cron:

45 17 3 * * /path/to/script.sh

A continuación, Cron ejecutaría este script a las 5:45 pm el tercer día de cada mes. Aunque la sintaxis puede ser un poco confusa al principio, en realidad es una forma muy poderosa de programar tareas repetidas. Este formato ha sido adoptado por muchos programas y utilidades para especificar horarios.

node-cron

¿Qué es?

La utilidad Cron se ha convertido en sinónimo de programar tareas, que es node-cron obtuvo su nombre. En realidad, no usa ni interactúa con la utilidad Cron debajo, sino que simplemente programa y ejecuta tareas periódicas para usted usando Node’s setTimeout() función. Para ello, analiza la programación del formato Cron que especifique, determina cuándo debería ser el próximo ‘tick’ y establece el tiempo de espera en consecuencia.

Cómo usarlo

Usar node-cron, tendrá que programar una función para que se ejecute mediante programación, lo que en realidad podría ser más conveniente para usted que tener que meterse con la línea de comandos. Se puede programar una función simple como esta:

var cron = require('cron');

var job = new cron.CronJob('* * * * *', function() {
	console.log('Function executed!');
}, null, true);

Al ejecutar este código, verá el texto ‘¡Función ejecutada!’ impreso en la consola una vez por minuto.

Incluso puede ser un poco más elegante y especificar la zona horaria en la que debe ejecutarse la tarea. O, otra opción, es contar node-cron para no empezar el trabajo todavía. De esta forma puede inicializar el trabajo y luego usar el .start() y .stop() métodos solo cuando lo necesite. Consulte la documentación completa para obtener una lista completa de parámetros y opciones.

Ventajas y desventajas

Personalmente me gusta mucho node-cron debido a la facilidad con la que puede programar la ejecución del código mediante programación. Y dado que se ejecuta en Node, puede usarlo en cualquier sistema que admita Node (como Windows), y no solo en sistemas similares a Unix. Entonces, sea lo que sea para lo que lo esté usando, el código es más independiente del sistema de lo que sería si usara Cron directamente.

El mayor inconveniente, en mi opinión, es que dado que no usa Cron debajo, no obtenemos la persistencia que tendríamos de otra manera con Cron. Lo que quiero decir con esto es que en un reinicio del sistema, nuestro “trabajo” ya no se ejecutará. En su lugar, tendrá que hacer un trabajo adicional para que el proceso de node se ejecute nuevamente, como configurarlo para que se ejecute al inicio colocándolo / vinculándolo en /etc/init.d/. No es muy difícil de hacer, pero tampoco es muy conveniente.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad