API Capabilities para serviços agrupados antigos

Com a API Capabilities, a sua aplicação pode detetar interrupções e tempo de inatividade agendado para capacidades da API específicas. Pode usar esta API para reduzir o tempo de inatividade na sua aplicação ao detetar quando uma capacidade está indisponível e, em seguida, ignorá-la. Para ver o conteúdo do pacote capability, consulte a capabilityreferência do pacote. .

Por exemplo, se usar a API Datastore, pode usar a API Capabilities para detetar quando a API Datastore está indisponível e comunicar um erro ao utilizador:

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

Pode consultar separadamente a disponibilidade de leituras e escritas do Datastore. O exemplo seguinte mostra como detetar a disponibilidade de gravações do Datastore e, durante o tempo de inatividade, apresentar uma mensagem aos utilizadores:

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 a API Capabilities no Go 1.11

A função capability.Enabled devolve verdadeiro se a API e a capacidade fornecidas estiverem disponíveis. Tem de transmitir um nome de capacidade (como "write") ou o caráter universal "*" para consultar todas as capacidades da API.

Capacidades suportadas

Atualmente, a API suporta as seguintes capacidades:

Capacidade Argumentos para Enabled
Disponibilidade do blobstore "blobstore", "*"
Leituras do Datastore "datastore_v3", "*"
Escritas do Datastore "datastore_v3", "write"
Disponibilidade do serviço de correio "mail", "*"
Disponibilidade do serviço Memcache "memcache", "*"
Disponibilidade do serviço Task Queue "taskqueue", "*"
Disponibilidade do serviço de obtenção de URL "urlfetch", "*"