Capabilities API für gebündelte Legacy-Dienste

Mithilfe der Capabilities API kann Ihre Anwendung für bestimmte API-Funktionen Ausfälle und geplante Ausfallzeiten erkennen. Mit dieser API können Sie die Ausfallzeiten Ihrer Anwendung reduzieren, indem Sie erkennen, wann eine Funktion nicht verfügbar ist, und diese dann umgehen. Informationen zum Inhalt des capability-Pakets finden Sie in der capability-Paketreferenz. .

Wenn Sie z. B. die Datastore API verwenden, können Sie mithilfe der Capabilities API erkennen, wann die Datastore API nicht verfügbar ist, und dem Nutzer einen Fehler anzeigen:

func handler(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	// Check if the Datastore API is available
	if !capability.Enabled(ctx, "datastore_v3", "*") {
		http.Error(w, "This service is currently unavailable.", 503)
		return
	}
	// do Datastore lookup ...
}

Die Verfügbarkeit von Lese- und Schreibvorgängen in Datastore kann separat abgefragt werden. Im folgenden Beispiel wird gezeigt, wie die Verfügbarkeit von Schreibvorgängen in Datastore erkannt und Nutzern bei Ausfallzeiten eine Nachricht angezeigt wird:

func checkDatastoreMode(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	// Check if the Datastore service is in read-only mode.
	if !capability.Enabled(ctx, "datastore_v3", "write") {
		// Datastore is in read-only mode.
	}

}

Capabilities API in Go 1.11 verwenden

capability.EnabledEnabled gibt den Wert "true" zurück, wenn die bereitgestellte API und die Funktion verfügbar sind. Sie müssen einen Funktionsnamen wie "write" oder den "*"-Platzhalter übergeben, um alle Funktionen der API abzufragen.

Unterstützte Funktionen

Die API unterstützt zurzeit die folgenden Funktionen:

Funktion Argumente für Enabled
Verfügbarkeit von Blobstore "blobstore", "*"
Datastore-Lesevorgänge "datastore_v3", "*"
Datastore-Schreibvorgänge "datastore_v3", "write"
Verfügbarkeit des Mail-Diensts "mail", "*"
Verfügbarkeit des Memcache-Diensts "memcache", "*"
Verfügbarkeit des Aufgabenwarteschlangendiensts "taskqueue", "*"
Verfügbarkeit des URL-Abrufdiensts "urlfetch", "*"