node-schedule

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-schedule?

node-schedule es una biblioteca flexible para la planificación de tareas (similares a cron) en el entorno Node.js. Permite ejecutar funciones JavaScript/TypeScript según un horario, utilizando sintaxis cron, intervalos o fechas específicas. La biblioteca es ideal para crear tareas en segundo plano, notificaciones periódicas, limpieza de datos y otros procesos automatizados.

¿Para qué sirve node-schedule?

En aplicaciones web, a menudo es necesario ejecutar código no por solicitud del usuario, sino por tiempo. Por ejemplo: envío de informes diarios, archivado de registros, verificación de estados de servidores. node-schedule proporciona una forma simple y confiable de implementar esto sin sistemas de colas complejos. A diferencia de setInterval, admite horarios cron complejos y tiene en cuenta las zonas horarias.

Instalación

Instale la biblioteca a través de npm o yarn:

npm install node-schedule# oyarn add node-schedule

Para TypeScript, instale adicionalmente los tipos:

npm install @types/node-schedule --save-dev

Funciones principales

  • Horarios Cron: Soporte para la sintaxis cron estándar (minutos, horas, días, meses).
  • Cancelación de tareas: Posibilidad de cancelar la ejecución programada.
  • Tareas únicas: Ejecución en una fecha específica.
  • Tareas recurrentes: Repetición con un intervalo fijo.
  • Manejo de errores: Soporte incorporado para callbacks de errores.

Ejemplo de código en TypeScript

import * as schedule from 'node-schedule';

// Tarea: cada minutoconst job = schedule.scheduleJob('*/1 * * * *', () => { console.log('Tarea ejecutada en:', new Date().toISOString());});

// Tarea única después de 10 segundosconst date = new Date(Date.now() + 10000);schedule.scheduleJob(date, () => { console.log('Tarea única');});

// Cancelar tarea después de 30 segundossetTimeout(() => { job.cancel(); console.log('Tarea cancelada');}, 30000);

// Tarea con regla recurrenteconst rule = new schedule.RecurrenceRule();rule.hour = 14;rule.minute = 30;schedule.scheduleJob(rule, () => { console.log('Tarea a las 14:30 cada día');});

Cuándo usarlo

node-schedule es ideal para:

  • Utilidades en segundo plano: limpieza de archivos temporales, copias de seguridad.
  • Notificaciones: envío de correos electrónicos o notificaciones push programadas.
  • Monitoreo: verificación periódica del estado de los servicios.
  • Integraciones: sincronización con APIs externas mediante cron.

No use node-schedule para tareas que requieran alta precisión (milisegundos) o ejecución distribuida (para esto son mejores colas como Bull o RabbitMQ).

La biblioteca es ligera, no requiere dependencias externas y funciona muy bien junto con Express, NestJS o Node.js puro.

Recommendations