node-schedule

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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

Para TypeScript, instale também os tipos:

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

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

Recommendations