Programar funções


Para programar a execução de funções em horários especificados, use o gerenciador onSchedule para criar um tópico do Pub/Sub que usa o Cloud Scheduler para acionar eventos no tópico.

Antes de começar

Para usar essa solução no seu projeto do Firebase, é preciso que o projeto esteja no plano de preços Blaze. Se ainda não estiver no plano Blaze, faça upgrade do seu plano de preços.

O faturamento é obrigatório, mas o custo geral é gerenciável, porque cada job do Cloud Scheduler custa US$ 0,10 (USD) por mês e há um crédito de três jobs por conta do Google, sem custo financeiro. Use a calculadora de preços do Blaze para gerar uma estimativa de custo com base na projeção de uso.

As APIs do Pub/Sub e do Cloud Scheduler precisam estar ativadas no projeto. Essas APIs já devem estar ativadas na maioria dos projetos do Firebase. Para verificar isso, acesse o console do Google Cloud.

Escrever uma função programada

No Cloud Functions for Firebase, a lógica de programação está no código das funções, sem requisitos especiais de tempo de implantação. Para criar uma função programada, use functions.pubsub.schedule('your schedule').onRun((context)). Por exemplo, para executar uma função a cada cinco minutos com a sintaxe cron.yaml do App Engine, escreva um código semelhante a este:

exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
  console.log('This will be run every 5 minutes!');
  return null;
});

O Cloud Scheduler oferece suporte à sintaxe do Unix Crontab e do App Engine. Por exemplo, caso queira usar o Crontab para selecionar um fuso horário específico a fim de executar uma função planejada, escreva um código semelhante a este:

exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {
  console.log('This will be run every day at 11:05 AM Eastern!');
  return null;
});

O valor de timeZone precisa ser um nome de fuso horário do banco de dados tz . Consulte a referência do Cloud Scheduler para mais informações sobre as propriedades compatíveis.

Implantar uma função programada

Ao implantar uma função programada, o job do programador relacionado e o tópico do Pub/Sub são criados automaticamente. A CLI do Firebase reflete o nome do tópico, e é possível conferir o job e o tópico no console do Google Cloud. O nome do tópico é definido conforme a seguinte convenção:

firebase-scheduled-function_name-region

Exemplo:

firebase-scheduled-scheduledFunctionCrontab-us-east1.