Over a million developers have joined DZone.

App Engine Now Has Multi-Tenancy and Increased Datastore Quotas

DZone's Guide to

App Engine Now Has Multi-Tenancy and Increased Datastore Quotas

· Java Zone ·
Free Resource

Atomist automates your software deliver experience. It's how modern teams deliver modern software.

The 1.3.6 release of Google App Engine has a large list of new features compared to the last version.  Both Python and Java programs now have support for multi-tenancy applications.  In addition, GAE now includes a high-performance image serving system, custom error pages, relaxed quotas for the datastore, and a few other new features.  


The Namespaces API allows multiple client organizations to run the same application by segregating data using a unique namespace for different clients.  This is big news for developers who have wanted to serve the same app to multiple customers, with each customer having their own version.  With a slight amount of configuration, and no code changes, you can use this API.  The Namespaces API is very customizable.  Learn how to use it from these Java and Python examples.

More Datastore

GAE continues to knock down datastore limitations in its releases, and today some limitations have been lifted that were in place since its launch.  Developers can now exceed the 1,000 entity limit on count and offset queries.  These queries now safely execute until they return or until the application hits the request timeout limit.  In addition, almost all of the burst quotas for free apps have been raised to the level of paid apps.  

Custom Error Pages

No longer do developers have to accept the automatic App Engine error page.  Instead, they can now create their own static HTML page that can be served automatically over quota, DoS, timeout, and other generic error classes.  Configure the error handlers in your app.yaml or appengine-web.xml.

High-Performance Image Serving

The new serving system for high-performance images is based on the same infrastructure as Picasa.  Developers can now generate a stable URL for serving good-quality image thumbnails.  The URL can serve images that are resized and/or cropped automatically.  No CPU or dynamic serving load will be incurred on your application, but bandwidth is still charged as usual.  

It's all done by storing a copy of the image in Blobstore and requesting a high-performance per-image URL.  You just call the Python function get_serving_url, or the Java function getServingUrl and provide a Blob key along with optional serving size or crop arguments.  Developers can now easily serve hundreds of thumbnails on a single page, but you do need to enable billing in order to have high-performance image serving in your deployed application.


  • Java developers can use app.yaml (Python's configuration file) instead of appengine-web.xml
  • Blobstore supports Content-Range headers
  • The Admin Console interface can be used to pause task queues
  • The Dashboard graphs in the Admin Console now show up to 30 days worth of data

Get the open source Atomist Software Delivery Machine and start automating your delivery right there on your own laptop, today!


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}