Ejecutar tareas periódicas en Node con node-cron

    ¿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.

    Te puede interesar:Implementar la autenticación de usuario de la manera correcta

    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í:

    Te puede interesar:Cómo programar un Arduino con JavaScript
    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:

    Te puede interesar:Clases de ES6
    • 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.

    Te puede interesar:La guía definitiva para configurar NPM

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

    Te puede interesar:Evitar el infierno de devolución de llamada en Node.js
    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.

    Te puede interesar:Asegurar su aplicación Node.js

    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.

    Te puede interesar:Array Loops en Bash

    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:

    Te puede interesar:Copiar un directorio con SCP
    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.

    Te puede interesar:Subcadenas en Bash

    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.

    Te puede interesar:Enlaces simbólicos en Unix / Linux

    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.

    Te puede interesar:Zsh contra Bash

    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.

    Te puede interesar:Monitoreo de cambios de datos usando un HIDS

     

    Rate this post

    Etiquetas: