Finalizado 07/01/2021
Sobre o Node Cron | Conhecendo os Métodos | Métodos ScheduledTask | Sobre os Exemplos | Tecnologias | Rodando os Exemplos | Referências
O cron fornece uma maneira de repetir uma tarefa em um intervalo de tempo específico. Pode haver tarefas repetitivas, como registro e execução de backups, que precisam ocorrer diariamente ou semanalmente.Cada asterisco que faz parte da sintaxe do cron representa diferentes unidades de tempo como mostrado abaixo :
* * * * * *
| | | | | |
| | | | | Dia da Semana
| | | | Mês
| | | Dia do Mês
| | Hora
| Minuto
Segundo ( este campo é opcional )
Campo | Valores |
---|---|
Segundo | 0 - 59 |
Minuto | 0 - 59 |
Hora | 0 - 23 |
Dia do Mês | 1 - 31 |
Mês | 1 - 12 |
Dia da Semana | 0 - 7 ( ou nomes, 0 ou 7 são Domingo ) |
// Declaração da biblioteca
var cron = require ('node-cron') ;
//
cron.schedule ('1,2,4,5 * * * * ' , ( ) => {
console.log ( 'executando a cada minuto 1, 2, 4 e 5') ;
});
var cron = require('node-cron');
cron.schedule('1-5 * * * *', () => {
console.log('Executando a cada minuto para 1 de 5');
});
var cron = require('node-cron');
cron.schedule('*/2 * * * *', () => {
console.log('Executando a tarefa a cada 2 minutos');
});
// Usando os Nomes
var cron = require('node-cron');
cron.schedule('* * * January,September Sunday', () => {
console.log('Executando aos Domingos de Janeiro e Setembro');
});
// Usando os Nomes curtos
var cron = require('node-cron');
cron.schedule('* * * Jan,Sep Sun', () => {
console.log('Executando aos Domingos de Janeiro e Setembro');
});
Argumentos | Tipo | Descrição | Exemplo |
---|---|---|---|
expression | string | Expressão Cron | ( * * * * * * ) |
function | Function | Função que executará a Tarefa | function ( ) { } |
options | Object | Configuração opcional para agendamento das tarefas | Scheduled / Timezone |
Options | Tipo | Descrição | Exemplo |
---|---|---|---|
scheduled | boolean | Define se a tarefa criada é agendada ( Padrão = True ) | scheduled: true |
timezone | timezone | Timezone que será usada para o agendamento | timezone: "America/Sao_Paulo" |
Iniciar um Agendamento
/*
* Inicia a tarefa agendada.
*/
var cron = require('node-cron');
var task = cron.schedule('* * * * *', () => {
console.log('Tarefa Parada');
}, {
// Esta valor é opcional ele por padrão vem True
scheduled: false
});
// Inicializa o Agendamento
task.start();
Finalizar um Agendamento
/*
* A tarefa não será executada a menos que seja reiniciada.
*/
var cron = require('node-cron');
var task = cron.schedule('* * * * *', () => {
console.log('Executando a cada minuto até parar');
});
// Finaliza um agendamento
task.stop();
Destruir um Agendamento
/*
* A tarefa será interrompida e completamente destruída
*/
var cron = require('node-cron');
var task = cron.schedule('* * * * *', () => {
console.log('Não executará mais nem será capaz de reiniciar');
});
// Destrói o Agendamento
task.destroy();
Validar um Agendamento
/*
* Valida se a string fornecida é uma expressão cron válida.
*/
var cron = require('node-cron');
var valid = cron.validate('59 * * * *');
var invalid = cron.validate('60 * * * *');
- Nesse agendamento ao passar todos os asteriscos sem informar parâmetro algum, o cron o toma como padrão sendo assim a função que será executada dentro do schedule será executada minuto a minuto;
- Nesse agendamento a programação dele é para que todo vigésimo primeiro dia do mês ele faça a remoção do arquivo de log de erros, aqui utilizamos a biblioteca fs que faz a manipulação de arquivos com o node juntamente com o node cron para o agendamento.
- Nesse agendamento ele faz um Backup do Banco SQLite as 23:59 diariamente, se o backup for bem sucedido ele informa uma mensagem caso contrário e apresente erro ele será encerrado, para fazer o backup do sqlite é usada a biblioteca shelljs que faz a execução de um script shell para efetuar o backup dos dados;
- Nesse agendamento temos o envio de emails automáticos toda quarta-feira;
- É criada uma criada uma variável transportadora que contenha todas as configurações para envio de email;
- É criada uma variável com as configurações da mensagem;
- É criado o processo de envio de email onde são instanciadas as variáveis acima, com as configurações de email e da mensagem a sere enviada, contendo um controle de erros;
- Visual Studio Code - IDE
- NodeJS - Ambiente de execução JavaScript
- express - Framework para desenvolvimento Web
- node-cron - Pacote para agendamento de tarefas
- fs - Pacote para manipulação de arquivos
- shelljs - Pacote para execução de comandos shell
- nodemailer - Pacote para envio de Emails
Serve para todos os exemplos :
# Clone este repositório dos exemplos ( aqui ja possui todos os exemplos )
$ git clone https://github.com/brunoemferreira/NodeJS-Cron-Jobs.git
# execute o comando
$ node example1.js
# execute o comando
$ node example2.js
# execute o comando
$ node example3.js
# execute o comando
$ node example4.js
- Node Cron - NPM
- DigitalOcean - How To Use node-cron to Run Scheduled Jobs in Node.js
⌨️ com ❤️ por Bruno Eduardo 😊