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.txt
con 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