Funzioni di pianificazione

Se si desidera funzioni di pianificazione per l'esecuzione in orari specifici, l'uso functions.pubsub.schedule().onRun() Questo metodo comodo crea un Pub / Sub argomento e usa cloud di pianificazione per gli eventi di trigger su questo argomento, in modo che le corse funzione sul l'orario desiderato.

Prima di iniziare

Per utilizzare questa soluzione nel tuo progetto Firebase, il tuo progetto deve essere nel piano tariffario Blaze. Se non è già sul piano di Blaze, aggiornare il tuo piano tariffario .

Sebbene sia richiesta la fatturazione, puoi aspettarti che il costo complessivo sia gestibile, poiché ogni lavoro di Cloud Scheduler costa $ 0,10 (USD) al mese e sono previsti tre lavori gratuiti per account Google. Utilizzare il Blaze calcolatrice pricing per generare una stima dei costi in base all'utilizzo previsto.

Le API Pub/Sub e Cloud Scheduler devono essere abilitate per il tuo progetto. Questi dovrebbero essere già abilitati per la maggior parte dei progetti Firebase; è possibile verificare nella console di Google Cloud Platform .

Scrivi una funzione programmata

In Cloud Functions for Firebase, la logica di pianificazione risiede nel codice delle funzioni, senza particolari requisiti di tempo di implementazione. Per creare una funzione programmata, l'uso functions.pubsub.schedule('your schedule').onRun((context)) . Ad esempio, per eseguire una funzione ogni cinque minuti con App Engine cron.yaml sintassi, fare qualcosa del genere:

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

Sia la sintassi Unix Crontab che quella di App Engine sono supportate da Cloud Scheduler. Ad esempio, per utilizzare Crontab per selezionare un fuso orario specifico in cui eseguire una funzione pianificata, fai qualcosa del genere:

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;
});

Il valore per timeZone deve essere un nome di fuso orario dal database di tz . Vedere il riferimento cloud Scheduler per ulteriori informazioni sulle proprietà supportate.

Distribuire una funzione pianificata

Quando si distribuisce una funzione pianificata, il processo di pianificazione correlato e l'argomento pub/sub vengono creati automaticamente. Il Firebase CLI riecheggia il nome di argomento, ed è possibile visualizzare il lavoro e argomento della GCP Console . L'argomento è denominato secondo la seguente convenzione:

Firebase-Programmato function_name - region

Per esempio:

firebase-scheduled-scheduledFunctionCrontab-us-east1.