기존 번들 서비스용 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 사용

capability.Enabled 함수는 제공된 API와 기능을 사용할 수 있는 경우에 true를 반환합니다. 기능 이름(예: "write")을 전달해야 하며 와일드 카드 "*"로 API의 모든 기능을 쿼리할 수도 있습니다.

지원되는 기능

이 API에서 현재 지원되는 기능은 다음과 같습니다.

기능 Enabled에 대한 인수
blobstore 사용 가능 여부 "blobstore", "*"
Datastore 읽기 "datastore_v3", "*"
Datastore 쓰기 "datastore_v3", "write"
메일 서비스 사용 가능 여부 "mail", "*"
Memcache 서비스 사용 가능 여부 "memcache", "*"
태스크 큐 서비스 사용 가능 여부 "taskqueue", "*"
URL Fetch 서비스 사용 가능 여부 "urlfetch", "*"