With the Capabilities API, your application can detect outages and scheduled downtime for specific API capabilities. You can use this API to reduce downtime in your application by detecting when a capability is unavailable and then bypassing it. .
For example, if you use the Images API to resize images, you can use the Capabilities API to detect when the Images API is unavailable and skip the resize:
import com.google.appengine.api.capabilities.*;
CapabilitiesService service =
CapabilitiesServiceFactory.getCapabilitiesService();
CapabilityStatus status = service.getStatus(Capability.IMAGES).getStatus();
if (status == CapabilityStatus.DISABLED) {
// Images API is not available.
}
You can separately query for the availability of Datastore reads and writes. The following sample shows how to detect the availability of Datastore writes and, during downtime, provide a message to users:
CapabilityStatus status =
service.getStatus(Capability.DATASTORE_WRITE).getStatus();
if (status == CapabilityStatus.DISABLED) {
// Datastore is in read-only mode.
}
Using the Capabilities API in Java 8
Each Capability is represented as a static constant on the Capability class,
such as
Capability.DATASTORE_WRITE
.
Each Capability has a state, which you can retrieve from
CapabilitiesService.getStatus(Capability)
.
Each state has a status, which is an enumeration reflecting a the availability
of a capability: either ENABLED
or DISABLED
. See below for the
list of services currently enabled in this API.
Supported capabilities
The API currently supports the following capabilities:
Capability | Arguments to getStatus |
---|---|
Availability of the blobstore | Capability.BLOBSTORE |
Datastore reads | Capability.DATASTORE |
Datastore writes | Capability.DATASTORE_WRITE |
Availability of the Images service | Capability.IMAGES |
Availability of the Mail service | Capability.MAIL |
Availability of the Memcache service | Capability.MEMCACHE |
Availability of the Task Queue service | Capability.TASKQUEUE |
Availability of the URL Fetch service | Capability.URL_FETCH |