O que é node-cron?
node-cron é uma biblioteca leve para Node.js que permite executar funções JavaScript (tarefas) em um agendamento, usando a sintaxe de expressões cron. Ela é análoga ao agendador de sistema cron no Unix, mas opera dentro da sua aplicação.
Para que serve?
A biblioteca é necessária para automatizar operações rotineiras no servidor: limpeza de banco de dados, envio de mailings, criação de backups, atualização de cache, parsing de dados e quaisquer outras tarefas periódicas. Isso elimina a necessidade de escrever timers próprios e gerenciar intervalos de tempo manualmente.
Instalação
A instalação é feita via npm ou yarn:
npm install node-cronou
yarn add node-cronPrincipais funcionalidades
- Simplicidade de sintaxe: usa expressões cron padrão (minutos, horas, dias, etc.)
- Flexibilidade: suporte a segundos, fuso horário opcional, execução em dias úteis/finais de semana
- Gerenciamento de tarefas: métodos
start(),stop(),destroy()para controlar a execução - Leveza: não requer dependências externas, o tamanho da biblioteca é mínimo
Exemplo de código em JavaScript (Node.js)
const cron = require('node-cron');
// Tarefa: exibir mensagem a cada minutocron.schedule('* * * * *', () => { console.log('Tarefa executada a cada minuto');});
// Tarefa: todos os dias às 9:30 da manhãcron.schedule('30 9 * * *', () => { console.log('Tarefa diária às 9:30');});
// Tarefa: toda segunda-feira às 8:00cron.schedule('0 8 * * 1', () => { console.log('Segunda-feira, 8:00 — hora do relatório');});
// Tarefa com segundos: a cada 10 segundoscron.schedule('*/10 * * * * *', () => { console.log('10 segundos se passaram');});
// Parar a tarefa após 5 segundosconst task = cron.schedule('*/1 * * * * *', () => { console.log('Tarefa infinita');});setTimeout(() => { task.stop(); console.log('Tarefa parada');}, 5000);Quando usar
Use node-cron quando precisar executar código em um horário específico ou com uma periodicidade definida dentro de uma aplicação Node.js. É ideal para:
- limpeza regular de arquivos temporários ou logs;
- envio de notificações ou emails agendados;
- sincronização de dados com APIs externas;
- geração de relatórios em segundo plano;
- execução de testes ou verificações de saúde do servidor.
A biblioteca não é adequada para sistemas distribuídos de alta carga (neste caso, é melhor usar uma fila de tarefas), mas para a maioria dos cenários típicos, é a solução ideal.
Também na biblioteca
Gerador de QR Codes em Java: biblioteca ZXing (Zebra Crossing)
Planejador de Tarefas Kotlin: visão geral e exemplos de uso
Validação de dados em C++: bibliotecas e métodos (libvalidate, nlohmann/json, Boost)
Agendador de tarefas em Go (Golang): guia para implementação de tarefas cron