O que é node-schedule?
node-schedule é uma biblioteca flexível para agendamento de tarefas (semelhante ao cron) no ambiente Node.js. Ela permite executar funções JavaScript/TypeScript em horários programados, usando sintaxe cron, intervalos ou datas específicas. A biblioteca é ideal para criar tarefas em segundo plano, notificações periódicas, limpeza de dados e outros processos automatizados.
Para que serve o node-schedule?
Em aplicações web, muitas vezes é necessário executar código não por solicitação do usuário, mas por tempo. Por exemplo: envio de relatórios diários, arquivamento de logs, verificação de status de servidores. O node-schedule fornece uma maneira simples e confiável de implementar isso sem sistemas de fila complexos. Ao contrário do setInterval, ele suporta agendamentos cron complexos e leva em consideração os fusos horários.
Instalação
Instale a biblioteca via npm ou yarn:
npm install node-schedule# ouyarn add node-schedulePara TypeScript, instale também os tipos:
npm install @types/node-schedule --save-devPrincipais funcionalidades
- Agendamentos Cron: Suporte à sintaxe cron padrão (minutos, horas, dias, meses).
- Cancelamento de tarefas: Possibilidade de cancelar a execução programada.
- Tarefas únicas: Execução em uma data específica.
- Tarefas recorrentes: Repetição com intervalo fixo.
- Tratamento de erros: Suporte integrado para callbacks de erro.
Exemplo de código em TypeScript
import * as schedule from 'node-schedule';
// Tarefa: a cada minutoconst job = schedule.scheduleJob('*/1 * * * *', () => { console.log('Tarefa executada em:', new Date().toISOString());});
// Tarefa única após 10 segundosconst date = new Date(Date.now() + 10000);schedule.scheduleJob(date, () => { console.log('Tarefa única');});
// Cancelar tarefa após 30 segundossetTimeout(() => { job.cancel(); console.log('Tarefa cancelada');}, 30000);
// Tarefa com regra recorrenteconst rule = new schedule.RecurrenceRule();rule.hour = 14;rule.minute = 30;schedule.scheduleJob(rule, () => { console.log('Tarefa às 14:30 todos os dias');});Quando usar
O node-schedule é ideal para:
- Utilitários em segundo plano: limpeza de arquivos temporários, backups.
- Notificações: envio de e-mails ou notificações push programadas.
- Monitoramento: verificação periódica da saúde dos serviços.
- Integrações: sincronização com APIs externas via cron.
Não use node-schedule para tarefas que exigem alta precisão (milissegundos) ou execução distribuída (para isso, filas como Bull ou RabbitMQ são mais adequadas).
A biblioteca é leve, não requer dependências externas e funciona muito bem em conjunto com Express, NestJS ou Node.js puro.
Também na biblioteca
Aprendizado de Máquina em Kotlin: visão geral das bibliotecas para Data Science e ML
JMH para Java: guia completo com exemplos práticos
Trabalhando com YAML em Java: bibliotecas SnakeYAML e Jackson
Parsing de HTML em C++: bibliotecas e exemplos para trabalhar com DOM e XPath
Trabalhando com ZIP/arquivos em Go (Golang) — guia completo