Jump to content

jeandepaula294

Postagens Recomendadas

Automatizar a execução de alguma funcionalidade é muito comum durante o desenvolvimento de softwares, como enviar emails em determinado horário em alguns dias da semana, limpar alguns dados do banco de dados de tempos em tempos ou requisitar informações de alguma API diariamente, por exemplo.

tower-clock-g7c6b65559_1920.jpg

Para facilitar a automatização dessas rotinas, existe a possibilidade de criarmos tarefas agendadas, também conhecidas como Cron Jobs, tais que podem ser configuradas para executar exatamente no tempo estabelecido, como a cada 10 minutos, todo fim de semana, ou todos os dias ao meio-dia, ou seja, facilitam a realização de processos que precisam ser executados com determinada frequência previamente definida.

Uma das formas de executar Cron Jobs com NodeJS é realizando a configuração diretamente no código-fonte, por meio de bibliotecas que permitem o controle e execução de uma rotina no intervalo definido.

A biblioteca node-cron, por exemplo, é um dos pacotes que pode ser utilizado para agendarmos uma tarefa utilizando o Node. Com o NodeJS instalado no computador e um projeto NPM iniciado, é possível instalá-la com o comando abaixo:

npm i node-cron

Com a biblioteca instalada, podemos definir qual funcionalidade iremos agendar. Para simplificar, criei uma função getData, que faz uma requisição para uma ferramenta de webhook que gera uma rota temporária, para conseguirmos visualizar o momento exato em que a função foi executada.

const getData = async () => {
  await fetch("https://webhook.site/85a67779-9632-4d5a-8603-286a11f554be");
};

Com a função definida, podemos estabelecer de a cada quanto tempo queremos que ela seja executada. Para isso, utilizaremos Expressões Cron, que são usadas na computação exatamente para determinar a frequência do agendamento de uma rotina, como os exemplos acima. Para entender como funcionam estas expressões e como você pode criar as suas, é só pesquisar por ferramentas que auxiliam na geração das expressões, como o site https://crontab.guru/

No exemplo abaixo, criei a expressão "*/3 * * * *", que permite a execução de uma tarefa a cada 3 minutos. Aqui, guardei o seu valor em uma variável, mas o ideal é deixar o valor em uma variável de ambiente, para que seja possível editar a frequência de uma rotina mais facilmente.

const jobFrequency = "*/3 * * * *";

Assim, definida a função a ser agendada e a sua frequência de execução, podemos utilizar a biblioteca node-cron para criarmos o Cron Job. Para agendarmos a rotina, utilizamos o método schedule do pacote, que foi importado logo no início do código.

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

const getData = async () => {
  await fetch("https://webhook.site/85a67779-9632-4d5a-8603-286a11f554be");
};

const jobFrequency = "*/3 * * * *";

cron.schedule(jobFrequency, getData);

Como primeiro parâmetro, o método recebe a expressão cron. Já o segundo parâmetro é a função que definimos que será executada a cada 3 minutos.

Captura de tela 2022-11-30 172337.png

Por fim, ao rodarmos o código, as requisições passarão a ser realizadas para a plataforma de webhook no intervalo que definimos, com os espaçamentos de 3 minutos entre a sua execução, como é possível ver nos registros de requisição da ferramenta de webhook, funcionando assim como o esperado.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...