アプリケーションで Capabilities API を使用すると、特定の API 機能の停止や予定されているダウンタイムを検出できます。この API を使用すると、機能が利用できなくなる時間帯を検出してバイパスできるので、アプリケーションのダウンタイムを短縮できます。
たとえば、Images API を使用して画像のサイズを変更する場合は、次のように Capabilities API を使用して、Images API が利用できないことを検出したらサイズ変更をスキップできます。
from google.appengine.api import capabilities
def StoreUploadedProfileImage(self):
uploaded_image = self.request.get('img')
# If the images API is unavailable, we'll just skip the resize.
if capabilities.CapabilitySet('images').is_enabled():
uploaded_image = images.resize(uploaded_image, 64, 64)
store(uploaded_image)
Datastore API には、データストアの読み取りおよび書き込み機能のコンビニエンス ラッパーが用意されています。機能名を引数として CapabilitySet()
に渡すだけでも機能をテストできますが、この場合は db.READ_CAPABILITY
と db.WRITE_CAPABILITY
というコンビニエンス CapabilitySet
オブジェクトを使用することもできます。次の例は、コンビニエンス ラッパーを使用してデータストアが書き込み可能かどうかを確認し、ダウンタイム中であればユーザーにメッセージを表示する方法を示しています。
from google.appengine.ext import db
def RenderHTMLForm(self):
if not db.WRITE_CAPABILITY.is_enabled():
# Datastore is in read-only mode.
Python 2 での Capabilities API の使用
CapabilitySet クラスは、この API で使用できるすべてのメソッドを定義しているクラスです。機能を明示的に指定することも、このクラスが提供するメソッドから暗黙的に指定することもできます。現在この API で有効なサービスの一覧については、次のセクションをご覧ください。
サポートされている機能
この API は現在、次の機能をサポートしています。
機能 | CapabilitySet への引数 |
---|---|
blobstore の利用可否 | "blobstore" |
Datastore の読み取り | "datastore_v3" |
データストアの書き込み | "datastore_v3", ["write"] |
画像サービスの利用可否 | "images" |
メールサービスの利用可否 | "mail" |
Memcache サービスの利用可否 | "memcache" |
タスクキュー サービスの利用可否 | "taskqueue" |
URL 取得サービスの利用可否 | "urlfetch" |