cron é uma ferramenta robusta para executar trabalhos (funções ou comandos) em agendamentos definidos usando a sintaxe cron.
Perfeito para tarefas como backups de dados, notificações e muito mais!
execute uma função sempre que seu trabalho agendado for acionado
execute um trabalho externo ao processo javascript (como um comando do sistema) usando child_process
use um objeto Date ou Luxon DateTime em vez da sintaxe cron como gatilho para seu retorno de chamada
use um slot adicional por segundos (deixá-lo desativado será o padrão 0 e corresponderá ao comportamento do Unix)
npm instalar cron
Características
Instalação
Migrando da v2 para a v3
Uso Básico
Padrões Cron
Visão geral da sintaxe Cron
Intervalos suportados
Pegadinhas
API
Funções autônomas
Classe CronJob
Classe CronTime
Comunidade
Junte-se à comunidade
Contribuindo
Contribuição Geral
Envio de bugs/problemas
Agradecimentos
Licença
Com a introdução do TypeScript na versão 3 e o alinhamento com os padrões cron do UNIX, algumas alterações foram feitas:
Indexação de mês: alterada de 0-11
para 1-12
. Então você precisa incrementar todos os meses numéricos em 1.
Indexação do dia da semana: suporte adicionado para 7
como domingo.
CronJob
O construtor não aceita mais um objeto como seu primeiro e único parâmetro. Use CronJob.from(argsObject)
em vez disso.
Os retornos de chamada agora são chamados na ordem em que foram registrados.
nextDates(count?: number)
agora sempre retorna um array (vazio se nenhum argumento for fornecido). Use nextDate()
para uma única data.
método job()
removido em favor de new CronJob(...args)
/ CronJob.from(argsObject)
método time()
removido em favor do new CronTime()
import { CronJob } from 'cron';const job = new CronJob('* * * * * *', // cronTimefunction () {console.log('Você verá esta mensagem a cada segundo');}, // onTicknull , // onCompletetrue, // start'America/Los_Angeles' // timeZone);// job.start() é opcional aqui por causa do quarto parâmetro definido como true.
// trabalho equivalente usando o método estático "from", fornecendo parâmetros como um objectconst job = CronJob.from({cronTime: '* * * * * *',onTick: function () {console.log('Você verá isto mensagem a cada segundo');},start: true,timeZone: 'America/Los_Angeles'});
Nota: No primeiro exemplo acima, o quarto parâmetro para
CronJob()
inicia o trabalho automaticamente. Se não for fornecido ou definido como falso, você deverá iniciar explicitamente o trabalho usandojob.start()
.
Para exemplos mais avançados, verifique o diretório de exemplos.
Os padrões Cron são a espinha dorsal desta biblioteca. Familiarize-se com a sintaxe:
- `*` Asterisks: Any value - `1-3,5` Ranges: Ranges and individual values - `*/2` Steps: Every two units
Padrões detalhados e explicações estão disponíveis em crontab.org. Os exemplos no link têm cinco campos e 1 minuto como a granularidade mais fina, mas nosso agendamento cron suporta um formato aprimorado com seis campos, permitindo precisão de segundo nível. Ferramentas como crontab.guru podem ajudar na construção de padrões, mas lembre-se de levar em consideração o campo dos segundos.
Aqui está uma referência rápida ao formato UNIX Cron que esta biblioteca usa, além de um segundo campo adicionado:
field allowed values ----- -------------- second 0-59 minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sunday, or use names)
Os nomes também podem ser usados para os campos 'mês' e 'dia da semana'. Use as três primeiras letras do dia ou mês específico (maiúsculas e minúsculas não importam). Intervalos e listas de nomes são permitidos.
Exemplos: "seg, qua, sex", "jan-mar".
Os objetos JS Date
e Luxon DateTime
não garantem precisão em milissegundos devido a atrasos de cálculo. Este módulo exclui a precisão de milissegundos para a sintaxe cron padrão, mas permite a especificação da data de execução por meio de objetos JS Date
ou Luxon DateTime
. No entanto, especificar um tempo de execução futuro preciso, como adicionar um milissegundo ao tempo atual, pode nem sempre funcionar devido a esses atrasos de cálculo. Observa-se que atrasos inferiores a 4-5 ms podem levar a inconsistências. Embora pudéssemos limitar toda a granularidade de datas a segundos, optamos por permitir maior precisão, mas avisar os usuários sobre possíveis problemas.
O uso de funções de seta para onTick
vincula-as ao contexto this
do pai. Como resultado, eles não terão acesso a this
contexto do cronjob. Você pode ler um pouco mais na edição nº 47 (comentário).
sendAt
: Indica quando um CronTime
será executado (retorna um objeto Luxon DateTime
).
importar * como cron de 'cron';const dt = cron.sendAt('0 0 * * *');console.log(`O trabalho seria executado em: ${dt.toISO()}`);
timeout
: indica o número de milissegundos no futuro em que um CronTime
será executado (retorna um número).
importar * como cron de 'cron';const timeout = cron.timeout('0 0 * * *');console.log(`O trabalho seria executado em ${timeout}ms`);
constructor(cronTime, onTick, onComplete, start, timeZone, context, runOnInit, utcOffset, unrefTimeout)
:
cronTime
: [REQUIRED] - O momento para encerrar seu trabalho. Pode ser sintaxe cron, um objeto JS Date
ou um objeto Luxon DateTime
.
onTick
: [REQUIRED] - Função a ser executada no horário especificado. Se um retorno de chamada onComplete
foi fornecido, onTick
o receberá como argumento.
onComplete
: [OPCIONAL] - Invocado quando o trabalho é interrompido com job.stop()
. Também pode ser acionado pelo onTick
após sua execução.
start
: [OPCIONAL] - Determina se o trabalho deve começar antes da saída do construtor. O padrão é false
.
timeZone
: [OPCIONAL] - Define o fuso horário de execução. O padrão é a hora local. Verifique os formatos válidos na documentação da Luxon.
context
: [OPCIONAL] - Contexto de execução para o método onTick.
runOnInit
: [OPCIONAL] - Aciona instantaneamente a função onTick
após a inicialização. O padrão é false
.
utcOffset
: [OPCIONAL] – Especifica o deslocamento do fuso horário em minutos. Não é possível coexistir com timeZone
.
unrefTimeout
: [OPCIONAL] - Útil para controlar o comportamento do loop de eventos. Mais detalhes aqui.
from
(estático): Crie um novo objeto CronJob fornecendo argumentos como um objeto. Veja os nomes e descrições dos argumentos acima.
start
: inicia o trabalho.
stop
: interrompe o trabalho.
setTime
: Modifica o horário do CronJob
. O parâmetro deve ser um CronTime
.
lastDate
: Fornece a última data de execução.
nextDate
: Indica a data subsequente que ativará um onTick
.
nextDates(count)
: Fornece uma matriz de datas futuras que iniciarão um onTick
.
fireOnTick
: Permite a modificação do comportamento de chamada onTick
.
addCallback
: permite a adição de retornos de chamada onTick
.
constructor(time, zone, utcOffset)
:
time
: [OBRIGATÓRIO] - O horário para iniciar seu trabalho. Aceita a sintaxe cron ou um objeto JS Date.
zone
: [OPCIONAL] - Equivalente ao timeZone
dos parâmetros CronJob
.
utcOffset
: [OPCIONAL] - Análogo ao utcOffset
dos parâmetros CronJob
.
Junte-se ao servidor Discord! Aqui você pode discutir problemas e obter ajuda em um fórum mais casual que o GitHub.
Este projeto está em busca de ajuda! Se você estiver interessado em ajudar com o projeto, dê uma olhada em nossa documentação de contribuição.
Por favor, dê uma olhada em nossa documentação de contribuição, ela contém todas as informações que você precisa saber antes de enviar um problema.
Este é um projeto de esforço comunitário. No sentido mais verdadeiro, este projeto começou como um projeto de código aberto do cron.js e cresceu para outra coisa. Outras pessoas contribuíram com código, tempo e supervisão para o projeto. Neste ponto, há muitos para citar aqui, então vamos apenas agradecer.
Agradecimentos especiais a Hiroki Horiuchi, Lundarl Gholoi e koooge por seu trabalho nas tipificações DefinitelyTyped antes de serem importadas na v2.4.0.
MIT