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-cronOu use yarn:
yarn add node-cronFunçõ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.
Também na biblioteca
Trabalho com imagens em Go (Golang): bibliotecas e exemplos
Express.js para JavaScript (Node.js): guia completo com exemplos
Trabalho com CSV em PHP: biblioteca SplFileObject e funções integradas
Trabalhando com S3 e armazenamentos em nuvem em Go: biblioteca minio-go
Rate Limiting em Rust: bibliotecas para controle de requisições