¿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-schedulePara TypeScript, instale adicionalmente los tipos:
npm install @types/node-schedule --save-devFunciones 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.
También en la biblioteca
MailKit para C# (.NET): guía completa con ejemplos prácticos
Planificador de tareas Kotlin: descripción general y ejemplos de uso
Caché en C# (.NET): Redis, MemoryCache y otras soluciones
Trabajo con XML en C++: bibliotecas pugixml, TinyXML-2 y RapidXML