node-cron: Programador de tareas para JavaScript (Node.js)

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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

O use yarn:

yarn add node-cron

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

Recommendations