Eine Hintergrundfunktion ist ein Typ einerereignisgesteuerter Funktion. Sie wird für Node.js, Go, Python und Java unterstützt.
Sie verwenden Hintergrundfunktionen, wenn Ihre Cloud Functions-Funktion indirekt als Reaktion auf ein Ereignis, z. B. eine Nachricht auf ein Pub/Sub-Thema, eine Änderung in einem Cloud Storage-Bucket oder ein Firebase-Ereignis, aufgerufen werden soll.
Informationen zum wiederholten Anwenden von Hintergrundfunktionen finden Sie unter Ereignisgesteuerte Funktionen wiederholen.
Unterstützende Laufzeiten
Die folgenden Laufzeiten unterstützen Hintergrundfunktionen:
Sprache | Versionen |
---|---|
Node.js | Alle |
Python | Alle |
Go | Alle |
Java | Alle |
Verwendungsbeispiel
Die folgenden Beispiele zeigen, wie Ereignisse aus Pub/Sub und Cloud Storage verarbeitet werden. Weitere Informationen zur Verarbeitung von Ereignissen aus verschiedenen Quellen finden Sie unter Cloud Functions aufrufen.
Pub/Sub-Beispiel
Dieses Beispiel zeigt eine Cloud Functions-Funktion, die durch Pub/Sub-Ereignisse ausgelöst wird. Jedes Mal, wenn eine Nachricht in einem Pub/Sub-Thema veröffentlicht wird, wird die Funktion aufgerufen, und eine Begrüßung mit Daten aus der Nachricht wird in das Log geschrieben.
Node.js
Python
Go
Java
Weitere Informationen zur Bereitstellung von Cloud Functions-Funktionen, die von Pub/Sub-Ereignissen ausgelöst werden, finden Sie unter Cloud Pub/Sub-Trigger und Anleitung zu Pub/Sub.
Beispiel für Cloud Storage
Dieses Beispiel zeigt eine Cloud Functions-Funktion, die von Cloud Storage-Ereignissen ausgelöst wird. Die Funktion wird jedes Mal aufgerufen, wenn in einem Cloud Storage-Bucket ein Objekt erstellt wird. Die Änderung wird mit einer Nachricht im Log protokolliert.
Node.js
Python
Go
Java
Weitere Informationen zum Bereitstellen von Cloud Functions-Funktionen, die von Cloud Storage-Ereignissen ausgelöst werden, finden Sie unter Cloud Storage-Trigger und in der Cloud Storage-Anleitung.
Funktionsparameter
Hintergrundfunktionen sind übergebene Argumente, die Daten zu dem Ereignis enthalten, das die Ausführung der Funktion ausgelöst hat. Die Parameter der Hintergrundfunktionen sind nachfolgend beschrieben:
Node.js
In den Node.js-Laufzeiten werden der Funktion die Argumente (data, context, callback)
übergeben:
Attribut | Beschreibung | Typ |
---|---|---|
data |
Das Datenobjekt für das Ereignis. Der Typ hängt vom Ereignis ab. | Objekt |
context |
Das Kontextobjekt für das Ereignis. | Objekt |
context.eventId |
Eine eindeutige ID für das Ereignis. Beispiel: "70172329041928" |
String |
context.timestamp |
Datum/Uhrzeit, zu der das Ereignis erstellt wurde. Beispiel:
"2018-04-09T07:56:12.975Z" .
|
String (ISO 8601) |
context.eventType |
Der Typ des Ereignisses. Beispiel:
"google.pubsub.topic.publish" .
|
String |
context.resource |
Die Ressource, von der das Ereignis stammt. | Objekt |
callback |
Ein Callback, um das Ende der Funktionsausführung zu signalisieren. Folgt der "errback"-Konvention, die das erste Argument als Fehler interpretiert: callback(); // Success callback(null, 'Success!'); // Success callback(1); // Error callback(new Error('Failed')); // Error |
Funktion |
Python
In der Python-Laufzeit werden der Funktion die Argumente (data, context)
übergeben:
Attribut | Beschreibung | Typ |
---|---|---|
data |
Ein Wörterbuch mit den Daten für das Ereignis. Das Format hängt vom Ereignis ab. | Cloud Storage-Objekt oder PubsubMessage |
context |
Das Kontextobjekt für das Ereignis. | Kontext |
context.event_id |
Eine eindeutige ID für das Ereignis. Beispiel: "70172329041928" |
String |
context.timestamp |
Datum/Uhrzeit, zu der das Ereignis erstellt wurde. Beispiel:
"2018-04-09T07:56:12.975Z" .
|
String (ISO 8601) |
context.event_type |
Der Typ des Ereignisses. Beispiel:
"google.pubsub.topic.publish" .
|
String |
context.resource |
Die Ressource, von der das Ereignis stammt. | String |
Go
In der Go-Laufzeit werden der Funktion die Argumente (ctx, Event)
übergeben:
Attribut | Beschreibung | Typ |
---|---|---|
ctx |
Ein Wert context.Context , der Metadaten zum Ereignis enthält. Sie können die Metadaten mit dem Paket cloud.google.com/go/functions/metadata abrufen.
|
context.Context
|
Event |
Ein
Die
Beachten Sie, dass Sie mit Ihrem |
Benutzerdefinierter struct |
Java
In der Java-Laufzeit werden der Funktion die Parameter (event, context)
übergeben. Es gibt zwei Arten von Hintergrundfunktionen: BackgroundFunction<T>
und RawBackgroundFunction
.
Attribut | Beschreibung | Typ |
---|---|---|
event |
Die Nutzlast des Ereignisses. Der Inhalt der Nutzlast hängt vom Trigger ab, für den die Funktion registriert wurde.
Für BackgroundFunction<T> lautet der Typ dieses Parameters T , was eine benutzerdefinierte Klasse ist. Die JSON-Nutzlast des Ereignisses wird mithilfe von Gson.fromJson in eine Instanz dieser Klasse deserialisiert.
Für RawBackgroundFunction lautet der Typ dieses Parameters String und ist die JSON-Nutzlast des Ereignisses.
|
Benutzerdefiniert oder String |
context |
Ein schreibgeschütztes Context -Objekt, das Metadaten zum Ereignis enthält. |
Context
|
Die Ereignisdaten hängen vom Trigger ab, für den die Funktion registriert wurde, z. B. Pub/Sub oder Cloud Storage. Bei direkt ausgelösten Funktionen, die mit dem Befehl gcloud functions call
ausgelöst wurden, enthalten die Ereignisdaten die Nachricht, die Sie direkt gesendet haben.
Hintergrundfunktionen beenden
Wenn eine Funktion Hintergrundaufgaben erstellt, z. B. Threads, Futures, Promise
-Objekte von Node.js, Callbacks oder Systemprozessee, müssen Sie diese Aufgaben beenden oder anderweitig auflösen, bevor Sie von der Funktion zurückkehren. Aufgaben, die vor dem Zurückkehren von einer bestimmten Ausführung nicht beendet wurden, werden möglicherweise nicht abgeschlossen und können außerdem ein nicht definiertes Verhalten verursachen.
Tipp
- Cloud Functions bereitstellen
- Pub/Sub-Triggerfunktionen aufrufen
- Cloud Storage-Triggerfunktionen aufrufen
- Anleitung zu Cloud Functions mit Pub/Sub
- Anleitung zu Cloud Functions mit Cloud Storage