¿Cómo ejecutar Cron Jobs en Node.js?

Cron Jobs: Estas son las tareas que ejecuta periódicamente el sistema operativo. Los usuarios pueden programar comandos, el sistema operativo ejecutará estos comandos automáticamente de acuerdo con el tiempo dado. Por lo general, se usa para trabajos de administración del sistema, como copias de seguridad, registro, envío de boletines, correos electrónicos de suscripción y más.

requisitos previos:

  • Node.js instalado
  • NPM instalado
  • Conocimiento básico de la sintaxis de Node.js

Usaremos un paquete llamado node-cron que es un programador de tareas en JavaScript puro para node.js. También estamos usando express como servidor. Instale los paquetes requeridos usando el comando

npm install express node-cron

Sintaxis:

cron.schedule("* * * * *", function() {
    // Task to do
});

Formato de tiempo para trabajos Cron:

Descriptores con sus rangos:

  • Segundos (opcional): 0 – 59
  • Minuto: 0 – 59
  • Hora: 0 – 23
  • Día del mes: 1 – 31
  • Mes: 1 – 12
  • Día de la semana: 0 – 7 (0 y 7 representan el domingo)

Ejemplos:

  • (*/10 * * * *) – Se ejecuta cada 10 minutos
  • (* * 21 * *) – Se ejecuta el 21 de cada mes
  • (0 8 * * 1) – Funciona a las 8 AM todos los lunes

Ejemplo: Cree un nuevo archivo llamado index.js y agregue el siguiente código:

// Importing required libraries
const cron = require("node-cron");
const express = require("express");
  
app = express(); // Initializing app
  
// Creating a cron job which runs on every 10 second
cron.schedule("*/10 * * * * *", function() {
    console.log("running a task every 10 second");
});
  
app.listen(3000);

Ejecute el archivo usando el comando node index, verá el resultado como se muestra a continuación:

Escribir en un archivo de registro: los trabajos cron se pueden usar para programar tareas de registro en un sistema. Podemos registrar el estado del servidor durante un tiempo determinado con fines de monitoreo.

Ejemplo:

// Importing required packages
const cron = require("node-cron");
const express = require("express");
const fs = require("fs");
  
app = express();
  
// Setting a cron job
cron.schedule("*/10 * * * * *", function() {
  
    // Data to write on file
    let data = `${new Date().toUTCString()} 
                : Server is working\n`;
      
    // Appending data to logs.txt file
    fs.appendFile("logs.txt", data, function(err) {
          
        if (err) throw err;
          
        console.log("Status Logged!");
    });
});
  
app.listen(3000);

Después de ejecutar el archivo anterior durante 30-40 segundos, verá un archivo creado logs.txtcon un contenido similar al siguiente:

Boletines mensuales: el envío de boletines mensuales también es un caso de uso para trabajos cron en los que se enviará un correo electrónico a los usuarios mensualmente con los últimos productos o información del blog en el sitio web.

Puede obtener más información sobre el envío de correo electrónico en Node.js aquí .

Ejemplo:

// Importing packages
const cron = require("node-cron");
const express = require("express");
const nodemailer = require("nodemailer");
  
app = express();
  
// Calling sendEmail() function every 1 minute
cron.schedule("*/1 * * * *", function() {
sendMail();
});
  
// Send Mail function using Nodemailer
function sendMail() {
    let mailTransporter = nodemailer.createTransport({
        service: "gmail",
        auth: {
        user: "<your-email>@gmail.com",
        pass: "**********"
        }
    });
      
    // Setting credentials
    let mailDetails = {
        from: "<your-email>@gmail.com",
        to: "<user-email>@gmail.com",
        subject: "Test mail using Cron job",
        text: "Node.js cron job email"
           + " testing for GeeksforGeeks"
    };
      
      
    // Sending Email
    mailTransporter.sendMail(mailDetails, 
                    function(err, data) {
        if (err) {
            console.log("Error Occurs", err);
        } else {
            console.log("Email sent successfully");
        }
    });
}
  
app.listen(3000);

El script anterior enviará correos electrónicos cada minuto.

Nota: Abra este enlace para Permitir aplicaciones menos seguras: ON .

Ahora ejecute el archivo usando node index.js, verá el resultado como se muestra a continuación:

En consola:

En la bandeja de entrada de Gmail:

Publicación traducida automáticamente

Artículo escrito por frikishaan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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