舊版套裝組合服務的 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 讀取與寫入功能的可用性。以下範例說明如何偵測 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 目前支援下列功能:

功能 Enabled 的引數
Blobstore 的可用性 "blobstore", "*"
Datastore 的讀取功能 "datastore_v3", "*"
Datastore 的寫入功能 "datastore_v3", "write"
郵件服務的可用性 "mail", "*"
Memcache 服務的可用性 "memcache", "*"
工作佇列服務的可用性 "taskqueue", "*"
網址擷取服務的可用性 "urlfetch", "*"