¿Qué es node-cron?
node-cron es una biblioteca ligera para Node.js que permite ejecutar funciones de JavaScript según un horario, utilizando la sintaxis de expresiones cron. Es ideal para automatizar tareas rutinarias: enviar notificaciones por email, limpiar la base de datos, hacer web scraping o generar informes.
¿Por qué se necesita un planificador de tareas?
En el desarrollo web, a menudo es necesario ejecutar código no de inmediato, sino en intervalos específicos. Ejecutar scripts manualmente con setInterval() o setTimeout() es incómodo para horarios complejos (por ejemplo, "cada segundo martes del mes a las 15:00"). node-cron resuelve este problema proporcionando una forma flexible y legible de definir horarios.
Instalación
Instale la biblioteca a través de npm:
npm install node-cronO use yarn:
yarn add node-cronFunciones principales
- cron.schedule(expression, callback) — ejecuta una función según un horario.
- cron.validate(expression) — verifica la validez de una expresión cron.
- task.stop() — detiene una tarea.
- task.start() — reanuda la ejecución de una tarea detenida.
- Soporte para segundos (campo adicional al inicio de la expresión).
Ejemplo de código en JavaScript (Node.js)
Veamos un ejemplo simple: ejecutar una tarea cada minuto que muestre la hora actual en la consola.
const cron = require('node-cron');
// La tarea se ejecuta cada minutoconst task = cron.schedule('* * * * *', () => { console.log('Ejecutando tarea:', new Date().toLocaleTimeString());});
// Iniciar la tareatask.start();
// Detener la tarea después de 5 minutossetTimeout(() => { task.stop(); console.log('Tarea detenida');}, 300000);Explicación de la expresión cron: '* * * * *' — minuto, hora, día del mes, mes, día de la semana. El asterisco significa "cada". Por ejemplo, '0 9 * * 1-5' — cada día laborable a las 9:00.
Ejemplo con validación:
const cron = require('node-cron');
const expression = '30 4 * * 0'; // cada domingo a las 4:30 a.m.if (cron.validate(expression)) { cron.schedule(expression, () => { console.log('Limpieza dominical de datos...'); });} else { console.error('Expresión cron no válida');}¿Cuándo usar node-cron?
- Automatización de backups: crear copias de seguridad de la base de datos una vez al día.
- Envío de boletines: envío diario de un resumen a los suscriptores.
- Monitoreo: verificar la disponibilidad de APIs externas cada 5 minutos.
- Limpieza de caché: eliminar datos obsoletos de Redis o del sistema de archivos.
- Web scraping: descargar tipos de cambio o noticias según un horario.
La biblioteca es perfecta para proyectos pequeños y medianos donde no se necesita un orquestador de tareas completo como Bull o Agenda. Si su aplicación se ejecuta en un solo servidor y requiere un comportamiento simple similar a cron, node-cron será una excelente opción.
También en la biblioteca
PM2 — Monitoreo de aplicaciones JavaScript (Node.js)
Swagger-PHP para PHP: guía completa con ejemplos prácticos
Bcrypt en JavaScript (Node.js): guía completa con ejemplos
Cliente OAuth para JavaScript (Node.js): descripción general y ejemplos de uso
Envío de correo electrónico en Swift: bibliotecas y ejemplos para iOS/macOS