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.

    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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *