Se desideri pianificare l'esecuzione delle funzioni in orari specifici, utilizza il gestore onSchedule
per creare un argomento Pub/Sub che utilizzi Cloud Scheduler per attivare eventi su tale argomento.
Prima di iniziare
Per utilizzare questa soluzione nel tuo progetto Firebase, il tuo progetto deve essere incluso nel piano tariffario Blaze. Se non è già incluso nel piano Blaze, aggiorna il tuo piano tariffario .
Anche se la fatturazione è obbligatoria, puoi aspettarti che il costo complessivo sia gestibile, poiché ogni lavoro di Cloud Scheduler costa $ 0,10 (USD) al mese e c'è un'indennità di tre lavori per account Google, senza alcun costo. Utilizza il calcolatore dei prezzi di Blaze per generare una stima dei costi basata sull'utilizzo previsto.
Le API Pub/Sub e Cloud Scheduler devono essere abilitate per il tuo progetto. Questi dovrebbero già essere abilitati per la maggior parte dei progetti Firebase; puoi verificare nella console di Google Cloud Platform .
Scrivere una funzione programmata
In Cloud Functions for Firebase, la logica di pianificazione risiede nel codice delle funzioni, senza requisiti speciali per il tempo di distribuzione. Per creare una funzione pianificata, usa functions.pubsub.schedule('your schedule').onRun((context))
. Ad esempio, per eseguire una funzione ogni cinque minuti con la sintassi cron.yaml di App Engine , esegui una procedura simile a questa:
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
return null;
});
Sia la sintassi di 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, procedere in questo 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 per timeZone
deve essere un nome di fuso orario dal database tz . Consulta il riferimento a 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. L'interfaccia a riga di comando di Firebase fa eco al nome dell'argomento e puoi visualizzare il job e l'argomento nella console di GCP . L'argomento è denominato secondo la seguente convenzione:
firebase-scheduled- function_name - region
Per esempio:
firebase-scheduled-scheduledFunctionCrontab-us-east1.