利用 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 为 Datastore 读写功能提供便利的包装函数。虽然您可以通过将功能名称作为参数提供给 CapabilitySet()
来测试功能,但在这种情况下,您还可以使用 db.READ_CAPABILITY
和 db.WRITE_CAPABILITY
便利 CapabilitySet
对象。以下示例展示如何使用简便的包装函数来检测 Datastore 写操作的可用性,以及如何在停机期间向用户提供消息:
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_v3" |
数据存储区写入 | "datastore_v3", ["write"] |
Images 服务的可用性 | "images" |
Mail 服务的可用性 | "mail" |
Memcache 服务的可用性 | "memcache" |
任务队列服务的可用性 | "taskqueue" |
网址提取服务的可用性 | "urlfetch" |