Timeout della funzione

Se una funzione viene eseguita troppo a lungo, il sistema adotta misure per terminarla o limitarla. Questo periodo di timeout è di 60 secondi per impostazione predefinita, ma puoi estenderlo o ridurlo quando esegui il deployment della funzione:

  • In Cloud Functions (1ª generazione), la durata massima di timeout è di nove minuti (540 secondi).
  • In Cloud Functions (2nd gen), la durata massima di timeout è di 60 minuti (3600 secondi) per le funzioni HTTP e di 9 minuti (540 secondi) per le funzioni basate su eventi.

Quando l'esecuzione della funzione raggiunge il timeout, la risposta del sistema dipende dal fatto che si tratti di una funzione di 1ª generazione o 2ª generazione.

  • 1ª generazione.: un messaggio di risposta con stato di errore HTTP, in genere 408, viene restituito immediatamente al chiamante; l'esecuzione della funzione viene interrotta.
  • 2ª generazione.: un messaggio di risposta con stato di errore HTTP 504 viene immediatamente restituito al chiamante. L'istanza della funzione potrebbe essere limitata, ma continua a funzionare finché non viene chiusa automaticamente. Qualsiasi messaggio di risposta generato dalla funzione viene ignorato e non restituito al chiamante.

Questo comportamento delle funzioni di 2ª generazione può causare effetti collaterali imprevisti. Un sintomo comune è la visualizzazione del lavoro e dei log da una richiesta "fuori" a una richiesta successiva. Per evitare che ciò accada, usa le seguenti tecniche per evitare i timeout nelle funzioni:

  1. Imposta un timeout superiore al tempo di esecuzione della funzione previsto.
  2. Monitora la quantità di tempo rimanente durante l'esecuzione. Poi esegui la pulizia e torna presto.

Imposta una durata del timeout

Puoi impostare la durata del timeout di una funzione al momento del deployment utilizzando Google Cloud CLI o la console Google Cloud.

gcloud

Se esegui il deployment utilizzando gcloud CLI, utilizza il flag --timeout:

gcloud functions deploy YOUR_FUNCTION_NAME --timeout=TIMEOUT_DURATION ...

Per modificare una durata di timeout esistente con Google Cloud CLI, esegui nuovamente il deployment della funzione con un nuovo valore di timeout.

Console

Per impostare la durata del timeout durante la creazione della funzione nella console Google Cloud:

  1. Vai alla pagina Panoramica di Cloud Functions nella console Google Cloud.
  2. Fai clic su Crea funzione.
  3. Compila i campi obbligatori per la funzione.
  4. Espandi la sezione Runtime, build... alla fine della pagina e fai clic sulla scheda Runtime.
  5. Nel campo Timeout, inserisci un numero di secondi.

    Per modificare una durata di timeout esistente nella console Google Cloud, nella pagina della panoramica delle funzioni fai clic sul nome della funzione per andare alla relativa pagina dei dettagli. Nella pagina dei dettagli, fai clic su Modifica, espandi la sezione Runtime, build..., quindi fai clic sulla scheda Runtime, in cui puoi modificare direttamente il valore nel campo Timeout.