Se vuoi pianificare l'esecuzione delle funzioni in orari specifici, utilizza il gestore onSchedule per creare un argomento Pub/Sub che utilizza Cloud Scheduler per attivare gli eventi su quell'argomento.
Prima di iniziare
Sebbene le funzioni pianificate vengano fatturate, puoi aspettarti che il costo complessivo sia gestibile, poiché ogni job Cloud Scheduler costa 0,10 $ (USD) al mese e sono previsti 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. Queste dovrebbero essere già abilitate per la maggior parte dei progetti Firebase. Puoi verificarlo nella console Google Cloud.
Scrivi una funzione pianificata
In Cloud Functions for Firebase, la logica di pianificazione risiede nel codice delle funzioni, senza requisiti speciali per il 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;
});
Cloud Scheduler supporta sia la sintassi Unix Crontab sia la sintassi App Engine. 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 il
riferimento Cloud Scheduler.
Esegui il deployment di una funzione pianificata
Quando esegui il deployment di una funzione pianificata, il job dello scheduler e l'argomento Pub/Sub correlati vengono creati automaticamente. L'interfaccia a riga di comando Firebase restituisce il nome dell'argomento e puoi visualizzare il job e l'argomento nella console Google Cloud. Il nome dell'argomento segue questa convenzione:
firebase-scheduled-function_name-region
Ad esempio:
firebase-scheduled-scheduledFunctionCrontab-us-east1.