App Engine Team
unread,Aug 27, 2009, 3:57:09 PM8/27/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Google App Engine Downtime Notify
On Tuesday, September 1st, App Engine will undergo maintenance for
approximately one hour, starting at 5 PM Pacific Time. App Engine will
be changing its primary datacenter, and this period of read-only
access will ensure all application data is synchronized across
datacenters. Once this process is complete, write access will be re-
enabled in the new primary datacenter.
During this maintenance period, all App Engine applications will
revert to read-only mode, and all datastore writes and transactions
will throw an exception. Please see the FAQ below for more
information.
App Engine Team
=== Maintenance Period FAQ ===
Q: How can I detect read-only mode in my application?
A: In Python, you can use the following call to the Capabilities API
to detect whether writes to the Datastore are currently enabled:
capabilities.CapabilitySet('datastore_v3', ['write']).is_enabled
()
Q: Can I write to memcache during the period of read-only access?
A: During this scheduled maintenance, both reads and writes to
memcache will also be disabled. Calls to the memcache API will not
throw exceptions but will instead return False for set() calls and
None for get() calls (just like any other cache miss). In addition,
memcache API calls will return immediately during this period, without
any additional latency.
Q: How can I fail gracefully when Datastore writes and transactions
are unavailable in App Engine?
A: You can modify your application to catch the exception thrown
below:
exception
google.appengine.runtime.apiproxy_errors.CapabilityDisabledError
This will be thrown by db.Model.put(), db.Model.delete(), and
db.run_in_transaction(). You can use Python's try syntax to fail
gracefully on writes like this:
from google.appengine.ext import db
from google.appengine.runtime.apiproxy_errors import
CapabilityDisabledError
myModel = db.Model()
try:
myModel.put()
except CapabilityDisabledError:
# fail gracefully here
pass