API Capabilities para serviços agrupados legados

Com a API Capabilities, é possível detectar interrupções e uma inatividade programada de determinados recursos da API. É possível usar essa API para reduzir a inatividade no aplicativo detectando quando um recurso está indisponível e pode ser ignorado. .

Por exemplo, se você usar a API Images para redimensionar imagens, poderá usar a API Capabilities para detectar quando a API Images está indisponível e ignorar o redimensionamento:

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)

A Datastore API oferece um wrapper prático para os recursos de leitura e gravação do Datastore. Embora você possa testar recursos simplesmente fornecendo o nome do recurso como um argumento para CapabilitySet(), neste caso, também é possível usar os objetos CapabilitySet de conveniência db.READ_CAPABILITY e db.WRITE_CAPABILITY. O exemplo a seguir mostra como detectar a disponibilidade de gravações do armazenamento de dados usando um wrapper de conveniência e, durante o tempo de inatividade, exibir uma mensagem para os usuários:

from google.appengine.ext import db

def RenderHTMLForm(self):
    if not db.WRITE_CAPABILITY.is_enabled():
        # Datastore is in read-only mode.

Como usar a API Capabilities no Python 2

A classe CapabilitySet define todos os métodos disponíveis para essa API. É possível nomear os recursos explicitamente ou deduzi-los dos métodos fornecidos por essa classe. Consulte abaixo a lista de serviços que estão ativados atualmente nessa API.

Recursos compatíveis

No momento, a API oferece suporte aos seguintes recursos:

Recurso Argumentos para CapabilitySet
Disponibilidade do blobstore "blobstore"
Leituras do Datastore "datastore_v3"
Gravações do Datastore "datastore_v3", ["write"]
Disponibilidade do serviço de imagens "images"
Disponibilidade do serviço de e-mail "mail"
Disponibilidade do serviço de memcache "memcache"
Disponibilidade do serviço de fila de tarefas "taskqueue"
Disponibilidade do serviço de Busca de URL "urlfetch"