Funzioni di programmazione


Se vuoi pianificare l'esecuzione delle funzioni in momenti specifici, utilizza il gestore onSchedule per creare un argomento Pub/Sub che utilizzi Cloud Scheduler per attivare gli eventi in quell'argomento.

Prima di iniziare

Per utilizzare questa soluzione nel tuo progetto Firebase, il progetto deve essere nel piano tariffario Blaze. Se non è già sul piano Blaze, esegui l'upgrade del piano tariffario.

Anche se la fatturazione è obbligatoria, puoi aspettarti che il costo complessivo sia gestibile, poiché ogni job Cloud Scheduler costa 0,10 $ (USD) al mese e puoi eseguire fino a tre job per account Google senza costi. Utilizza il Calcolatore prezzi di Blaze 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. Puoi verificarli nella console Google Cloud.

Scrivere una funzione pianificata

In Cloud Functions for Firebase, la logica di pianificazione risiede nel codice delle funzioni, senza requisiti speciali al momento del deployment. Per creare una funzione pianificata, utilizza functions.pubsub.schedule('your schedule').onRun((context)). Ad esempio, per eseguire una funzione ogni cinque minuti con la sintassi App Engine cron.yaml, procedi nel seguente modo:

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

La sintassi di Crontab di Unix e App Engine è supportata da Cloud Scheduler. Ad esempio, per utilizzare Crontab per selezionare un fuso orario specifico in cui eseguire una funzione pianificata, procedi nel seguente modo:

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 di timeZone deve essere il nome di un fuso orario del database tz. Per ulteriori informazioni sulle proprietà supportate, consulta la pagina di riferimento Cloud Scheduler.

Esegui il deployment di una funzione pianificata

Quando esegui il deployment di una funzione pianificata, il job di scheduler correlato e l'argomento Pub/Sub vengono creati automaticamente. La CLI Firebase ripete il nome dell'argomento e puoi visualizzare il job e l'argomento nella console Google Cloud. L'argomento viene denominato in base alla seguente convenzione:

firebase-scheduled-function_name-region

Ad esempio:

firebase-scheduled-scheduledFunctionCrontab-us-east1.