Here is a small snippet of code that I use on applications deployed on Google AppEngine to inform users that the application is in maintenance mode.
It usually happen when the AppEngine team put the datastore in read-only mode for maintenance purpose but other capabilities can be tested as well.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def requires_datastore_write(view): def newview(request, *args, **kwargs): from google.appengine.api import capabilities datastore_write_enabled = capabilities.CapabilitySet('datastore_v3', capabilities=['write']).is_enabled() if datastore_write_enabled: return view(request, *args, **kwargs) else: from django.shortcuts import render_to_response from django.template import RequestContext return render_to_response('maintenance.html', context_instance=RequestContext(request)) return newview |
This is a python decorator and you can use it to decorate views that require write access to the datastore. For example:
1 2 3 |
@requires_datastore_write def update(request): # Do something that requires to write in the database |
You will need to create a Django template named maintenance.html
to display a warning to your users. Mine looks like this:
1 2 3 4 |
<h2>Application Maintenance</h2> <p>The LibraryThing for Facebook application is currently in maintenance mode and some operations are temporarily unavailable.</p> <p>Thanks for trying back later. Sorry for the inconvenience.</p> |