cronjobs com Nodejs e Pm2
Crontab é um serviço do sistema operacional que possibilita a execução periódica de serviços em um determinado intervalo de tempo. Isto é normalmente usado para sincronizar dados, bots e outros. Diversas plataformas utilizam Crons para rodar serviços em segundo plano. Exemplo é o Mautic.
Existem algumas opções para agendar os serviços nodejs em background.
setInterval(function(){console.log('TASK'); },3000 );
Executado a cada 3000 milisegundos. Você define um intervalo de tempo e chama seu método dentro da função do setInterval
Dica: Alto grau de acoplamento sendo necessário mudar o Script para alterar o tempo de execução. Baixa performance porque uma instância fica permanentemente em memória.
Outra alternativa é utilizar o pacote. Instale o pacote e configure sua chamada.
npm install --save node-cron
Dica: Novamente existe uma situação de acoplamento sendo necessário mudar o Script para alterar o tempo de execução. Apesar disso o gerenciamento da performance é otimizado.
Uma solução robusta consiste na instalação do PM2.
pm2 start my_first_chatbot.js --cron "*/15 * * * *"
Dica: solução ideal. Permite configurar a execução do serviço my_first_chatbot.js em Background. Sem acoplamento com a lógica de negócio. O PM2 vai rodar o seu Script e finalizar o mesmo a cada 15 minutos. (0,15,30,45) minutos de cada hora.
Permite escalar para rodar múltiplos processos fazendo um fork da instância.
* * * * * Comando a ser executado - - - - - | | | | | | | | | +----- dia da semana (0 - 6) (Domingo=0) | | | +------- mês (1 - 12) | | +--------- dia do mês (1 - 31) | +----------- hora (0 - 23) +------------- minuto (0 - 59)