适用于旧版捆绑服务的 Capabilities API

利用 Capabilities API,您的应用可以检测特定 API 功能的服务中断情况和计划内停机时间。您可以使用此 API 来检测某项功能何时不可用并绕开这个时间,从而缩短应用停机时间。 如需查看 capability 软件包的内容,请参阅 capability 软件包参考文档

例如,如果您使用 Datastore API,则可以使用 Capabilities API 来检测 Datastore API 将在何时不可用,然后向用户报告错误:

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

您可以单独查询数据存储区读取和写入的可用性。以下示例展示如何检测 Datastore 写入的可用性,以及如何在停机期间向用户提供消息:

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

}

在 Go 1.11 中使用 Capabilities API

如果提供的 API 和功能可用,则 capability.Enabled 函数返回 true。您必须传递功能名称(例如 "write")或通配符 "*" 才能查询 API 的所有功能。

支持的功能

API 目前支持以下功能:

Capability Enabled 的参数
Blobstore 的可用性 "blobstore", "*"
数据存储区读取 "datastore_v3", "*"
数据存储区写入 "datastore_v3", "write"
邮件服务的可用性 "mail", "*"
Memcache 服务的可用性 "memcache", "*"
任务队列服务的可用性 "taskqueue", "*"
网址提取服务的可用性 "urlfetch", "*"