Estou procurando uma maneira de agendar Cloud Functions para Firebase ou, em outras palavras, acioná-los em um horário específico.
Estou procurando uma maneira de agendar Cloud Functions para Firebase ou, em outras palavras, acioná-los em um horário específico.
Atualização 18/04/2019
Agora existe uma maneira muito simples de implantar o código programado no Cloud Functions por meio do Firebase.
Você pode usar uma sintaxe de texto simples:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
Ou o formato de tabela cron mais flexível:
export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
console.log('This will be run every day at 11:05 AM UTC!');
});
Para saber mais sobre isso, consulte:
Observe que seu projeto precisa estar em um plano Blaze para que isso funcione, então estou deixando as opções alternativas abaixo para referência.
Se você quiser agendar uma única invocação de um Cloud Function em um atraso de dentro da execução de outro gatilho, pode usar o Cloud Tasks para configurar isso. Leia este artigo para obter um exemplo detalhado de como isso pode funcionar.
Resposta original abaixo ...
Ainda não há um gatilho do tipo runat / cron integrado.
No momento, a melhor opção é usar um serviço externo para acionar uma função HTTP periodicamente. Consulte este exemplo no repositório de exemplos de funções para obter mais informações. Ou use o Google Cloud Scheduler introduzido recentemente para acionar o Cloud Functions por meio de PubSub ou HTTPS:
Também recomendo a leitura desta postagem no blog do Firebase: Como agendar (Cron) jobs com Cloud Functions para Firebase e este vídeo: Cronometrando o Cloud Functions para Firebase usando um gatilho HTTP e Cron .
Esse último link usa cron-job.org para acionar o Cloud Functions e funciona para projetos que estão em um plano gratuito. Observe que isso permite que qualquer pessoa chame sua função sem autorização, portanto, você pode querer incluir algum mecanismo de proteção contra abuso no próprio código.
cron-job.org
que a Jen fala no post do blog é de uso gratuito.Each Cloud Scheduler job costs $0.10 (USD) per month
presumir que "job" não significa cada vez que o item programado é disparado, mas o custo por cronômetro? ou seja, um trabalho executado a cada minuto custa apenas US $ 0,10? (excluindo quaisquer funções de nuvem que ele chama).O que você pode fazer é ativar uma instância do AppEngine que é acionada pelo cron job e emite para o PubSub. Eu escrevi uma postagem no blog especificamente sobre isso, você pode querer dar uma olhada:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
fonte