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
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à attivo il piano Blaze, esegui l'upgrade del tuo piano tariffario.
Sebbene sia necessaria la fatturazione, puoi aspettarti che il costo complessivo sia gestibile, in quanto ogni job Cloud Scheduler costa 0, 10 $ (USD) al mese ed è previsto un limite di 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 verificarlo 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 di 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, fai qualcosa di simile:
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 quella di 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 un nome di 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, vengono creati automaticamente il job di pianificazione e l'argomento Pub/Sub correlati. 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.