API Capabilities para servicios agrupados antiguos

Con la API Capabilities, tu aplicación puede detectar interrupciones y periodos inactivos programados de funciones de la API específicas. Puedes usar esta API para reducir el tiempo de inactividad de tu aplicación detectando cuándo no está disponible una función y, a continuación, omitiéndola. Para ver el contenido del paquete capability, consulta la referencia del paquete capability.

Por ejemplo, si usas la API de Datastore, puedes usar la API Capabilities para detectar cuándo no está disponible y mostrar un error al usuario:

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 ...
}

Puedes consultar por separado la disponibilidad de las lecturas y escrituras de Datastore. En el siguiente ejemplo se muestra cómo detectar la disponibilidad de las escrituras de Datastore y, durante el tiempo de inactividad, proporcionar un mensaje a los usuarios:

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.
	}

}

Usar la API Capabilities

La función capability.Enabled devuelve true si la API y la función proporcionadas están disponibles. Debes proporcionar un nombre de función (como "write") o el comodín "*" para consultar todas las funciones de la API.

Funciones admitidas

En estos momentos, el API admite las siguientes capacidades:

Competencia Argumentos de Enabled
Disponibilidad del almacén de blob "blobstore", "*"
Operaciones de lectura en el almacén de datos "datastore_v3", "*"
Operaciones de escritura en Datastore "datastore_v3", "write"
Disponibilidad del servicio de correo "mail", "*"
Disponibilidad del servicio Memcache "memcache", "*"
Disponibilidad del servicio de cola de tareas "taskqueue", "*"
Disponibilidad del servicio de extracción de URL "urlfetch", "*"