Google 致力于为黑人社区推动种族平等。查看具体举措
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Funzioni di pianificazione

Se desideri pianificare l'esecuzione delle funzioni a orari specificati, utilizza functions.pubsub.schedule().onRun() Questo comodo metodo crea un argomento Pub / Sub e utilizza Cloud Scheduler per attivare gli eventi su quell'argomento, assicurando che la funzione venga eseguita su il programma desiderato.

Prima di iniziare

Per utilizzare questa soluzione nel tuo progetto Firebase, devi essere nel piano di fatturazione di Blaze. Se non sei già su Blaze, aggiorna il tuo account .

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 c'è un'indennità di tre lavori gratuiti per account Google. Utilizza il calcolatore dei 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 verificare nella console di Google Cloud Platform .

Scrivi una funzione programmata

In Cloud Functions per Firebase, la logica di pianificazione risiede nel codice delle funzioni, senza particolari requisiti di 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 , fai 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 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, 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 tz . Consulta il riferimento di Cloud Scheduler per ulteriori informazioni sulle proprietà supportate.

Distribuisci una funzione pianificata

Quando si distribuisce una funzione pianificata, il lavoro dello scheduler correlato e l'argomento pub / sub vengono creati automaticamente. La CLI di Firebase riprende il nome dell'argomento e puoi visualizzare il lavoro e l'argomento nella console di GCP . L'argomento è denominato in base alla seguente convenzione:

Firebase-Programmato function_name - region

Per esempio:

firebase-schedule-scheduleFunctionCrontab-us-east1.