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, mostrar 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 en Go 1.11

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", "*"