Funzioni in background
Una funzione in background è un tipo di funzione basata su eventi. È supportata per Node.js, Go, Python e Java.
Utilizza le funzioni in background quando vuoi che la Funzione Cloud venga richiamata indirettamente in risposta a un evento, ad esempio un messaggio su un argomento Pub/Sub, una modifica in un bucket Cloud Storage o un evento Firebase.
Per informazioni su come ritentare le funzioni in background, consulta Riprovare le funzioni basate su eventi.
Supporto dei runtime
I seguenti runtime supportano le funzioni in background:
Lingua | Versioni |
---|---|
Node.js | Tutti |
Python | Tutti |
Go | Tutti |
Java | Tutti |
Esempi di utilizzo
Gli esempi riportati di seguito mostrano come elaborare gli eventi da Pub/Sub e Cloud Storage. Per ulteriori informazioni sulla gestione degli eventi da sorgenti diverse, consulta Chiamata di Cloud Functions.
Esempio di Pub/Sub
Questo esempio mostra una funzione Cloud Functions attivata da eventi Pub/Sub. Ogni volta che un messaggio viene pubblicato in un argomento Pub/Sub, la funzione viene richiamata e un saluto utilizzando i dati derivati dal messaggio viene scritto nel log.
Node.js
Python
Go
Java
Per ulteriori informazioni sul deployment di Cloud Functions attivati da eventi Pub/Sub, consulta gli argomenti Trigger Pub/Sub e Tutorial su Pub/Sub.
Esempio di Cloud Storage
Questo esempio mostra una funzione Cloud Functions attivata da eventi Cloud Storage. Ogni volta che viene creato un oggetto in un bucket Cloud Storage, la funzione viene richiamata e un messaggio sulla modifica viene scritto nel log.
Node.js
Python
Go
Java
Per ulteriori informazioni sul deployment di Cloud Functions attivati dagli eventi di Cloud Storage, consulta i trigger di Cloud Storage e il tutorial su Cloud Storage.
Parametri funzione
Le funzioni in background sono argomenti passati contenenti dati associati all'evento che ha attivato l'esecuzione della funzione. I parametri delle funzioni in background sono descritti di seguito:
Node.js
Nei runtime Node.js, la funzione trasmette gli
argomenti (data, context, [callback])
:
Proprietà | Descrizione | Tipo |
---|---|---|
data |
L'oggetto dati per l'evento. Il tipo dipende dall'evento. | Oggetto |
context |
L'oggetto di contesto per l'evento. | Oggetto |
context.eventId |
Un ID univoco per l'evento. Ad esempio: "70172329041928" . |
Stringa |
context.timestamp |
La data e l'ora in cui è stato creato l'evento. Ad esempio:
"2018-04-09T07:56:12.975Z" .
|
Stringa (ISO 8601) |
context.eventType |
Il tipo di evento. Ad esempio:
"google.pubsub.topic.publish" .
|
Stringa |
context.resource |
La risorsa che ha emesso l'evento. | Oggetto |
callback |
Un callback facoltativo per segnalare il completamento della funzione ritardata. Segue la convenzione "errback" che interpreta il primo argomento come un errore: callback(); // Success callback(null, 'Success!'); // Success callback(1); // Error callback(new Error('Failed')); // Error |
Funzione |
Python
Nel runtime Python, la funzione trasmette gli argomenti
(data, context)
:
Proprietà | Descrizione | Tipo |
---|---|---|
data |
Un dizionario contenente i dati dell'evento. Il formato dipende dall'evento. | Oggetto Cloud Storage o PubSubMessage |
context |
L'oggetto di contesto per l'evento. | Context |
context.event_id |
Un ID univoco per l'evento. Ad esempio: "70172329041928" . |
Stringa |
context.timestamp |
La data e l'ora in cui è stato creato l'evento. Ad esempio:
"2018-04-09T07:56:12.975Z" .
|
Stringa (ISO 8601) |
context.event_type |
Il tipo di evento. Ad esempio:
"google.pubsub.topic.publish" .
|
Stringa |
context.resource |
La risorsa che ha emesso l'evento. | Stringa |
Go
Nel runtime Go, la funzione trasmette gli argomenti
(ctx, Event)
:
Proprietà | Descrizione | Tipo |
---|---|---|
ctx |
Un valore context.Context che trasporta metadati sull'evento. Puoi recuperare i metadati utilizzando il pacchetto
cloud.google.com/go/functions/metadata
.
|
context.Context
|
Event |
Un
La definizione di
Tieni presente che |
Definita dall'utente: struct |
Java
Nel runtime di Java, la tua funzione passa i parametri (event, context)
. Esistono due diverse funzioni in background, BackgroundFunction<T>
e RawBackgroundFunction
:
Proprietà | Descrizione | Tipo |
---|---|---|
event |
Il payload dell'evento. I contenuti del payload dipendono dall'attivatore per cui è stata registrata la funzione.
Per BackgroundFunction<T> , il tipo di questo parametro è T , che è una classe definita dall'utente. Il payload JSON dell'evento viene deserializzato in un'istanza di questa classe utilizzando Gson.fromJson .
Per RawBackgroundFunction , il tipo di questo parametro è String e rappresenta il payload JSON dell'evento.
|
Definita dall'utente o String
|
context |
Un oggetto Context di sola lettura che ospita metadati sull'evento.
|
Context
|
I dati dell'evento dipendono dall'attivatore per cui è stata registrata la funzione, ad esempio Pub/Sub o Cloud Storage. Nel caso di funzioni attivate direttamente, attivate tramite il comando gcloud functions call
, i dati dell'evento contengono il messaggio che hai inviato direttamente.
Chiusura delle funzioni in background
Se una funzione crea attività in background (come thread, future, oggetti Node.js
Promise
, callback o processi di sistema), devi terminare o
risolvere in altro modo queste attività prima di tornare dalla funzione. Le attività non terminate prima di tornare da una particolare esecuzione potrebbero non essere completate e potrebbero causare comportamenti non definiti.
Passaggi successivi
- Deployment di Funzioni Cloud.
- Chiamata delle funzioni di trigger Pub/Sub.
- Chiamata delle funzioni di trigger di Cloud Storage.
- Tutorial su Cloud Functions con Pub/Sub.
- Tutorial su Cloud Functions con Cloud Storage.