node-cron: Agendador de tarefas para JavaScript (Node.js)

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

node-cron é uma biblioteca leve para Node.js que permite executar funções JavaScript em um agendamento, usando a sintaxe de expressões cron. Ela é ideal para automatizar tarefas rotineiras: envio de notificações por email, limpeza de banco de dados, raspagem de páginas web ou geração de relatórios.

Para que serve um agendador de tarefas?

No desenvolvimento web, muitas vezes é necessário executar código não imediatamente, mas em intervalos específicos. A execução manual de scripts via setInterval() ou setTimeout() é inconveniente para agendamentos complexos (por exemplo, "toda segunda terça-feira do mês às 15:00"). O node-cron resolve esse problema, fornecendo uma maneira flexível e legível de definir horários.

Instalação

Instale a biblioteca via npm:

npm install node-cron

Ou use yarn:

yarn add node-cron

Funções principais

  • cron.schedule(expression, callback) — executa uma função em um agendamento.
  • cron.validate(expression) — verifica a validade de uma expressão cron.
  • task.stop() — interrompe uma tarefa.
  • task.start() — retoma a execução de uma tarefa interrompida.
  • Suporte a segundos (campo adicional no início da expressão).

Exemplo de código em JavaScript (Node.js)

Vamos considerar um exemplo simples: executar uma tarefa a cada minuto que exibe a hora atual no console.

const cron = require('node-cron');

// Tarefa executada a cada minutoconst task = cron.schedule('* * * * *', () => { console.log('Executando tarefa:', new Date().toLocaleTimeString());});

// Iniciar a tarefatask.start();

// Parar a tarefa após 5 minutossetTimeout(() => { task.stop(); console.log('Tarefa interrompida');}, 300000);

Decodificando a expressão cron: '* * * * *' — minuto, hora, dia do mês, mês, dia da semana. O asterisco significa "cada". Por exemplo, '0 9 * * 1-5' — cada dia útil às 9:00.

Exemplo com validação:

const cron = require('node-cron');

const expression = '30 4 * * 0'; // todo domingo às 4:30 da manhãif (cron.validate(expression)) { cron.schedule(expression, () => { console.log('Limpeza de dados de domingo...'); });} else { console.error('Expressão cron inválida');}

Quando usar node-cron?

  • Automação de backups: criação de cópias de segurança do banco de dados uma vez por dia.
  • Envio de newsletters: envio diário de um resumo para assinantes.
  • Monitoramento: verificação da disponibilidade de APIs externas a cada 5 minutos.
  • Limpeza de cache: remoção de dados obsoletos do Redis ou do sistema de arquivos.
  • Raspagem de dados: carregamento de taxas de câmbio ou notícias em um agendamento.

A biblioteca é ideal para projetos pequenos e médios, onde não é necessário um orquestrador de tarefas completo como Bull ou Agenda. Se sua aplicação roda em um único servidor e requer um comportamento simples semelhante ao cron — o node-cron será uma excelente escolha.

Recommendations