Opinion and commentary about Mac and iOS applications, publishing and content consumption behavior, web and cloud architectures
January 15, 2011

Google App Engine Updates

I haven’t upgraded the Python Google App Engine in a while and now I’m trying to catch up with the latest changes.

Version 1.4.0

  • The developer who uploaded an app version can download that version’s code using the appcfg.py download_app command. This feature can be disabled on a per application basis in the admin console, under the ‘Permissions’ tab. Once disabled, code download for the application CANNOT be re-enabled.
  • Size and quantity limits on datastore batch get/put/delete operations have been removed. Individual entities are still limited to 1 MB, but your app may batch as many entities together for get/put/delete calls as the overall datastore deadline will allow for.

    I think this was previously set to 500.

  • The total size of Memcache batch operations is increased to 32 MB. The 1 MB limit on individual Memcache objects still applies.

    I have an extension which allows storing larger objects into Memcache.

  • URLFetch allowed response size has been increased, up to 32 MB. Request size is still limited to 1 MB.

  • For the Task Queue, developers can specify task retry_parameters in their queue.yaml.

    More details here. The new retry_parameters supports the following additional options:

    • task_retry_limit
    • min_backoff_seconds
    • max_backoff_seconds
    • max_doublings
    • task_age_limit
  • The deadline for Task Queue and Cron requests has been raised to 10 minutes. Datastore and API deadlines within those requests remain unchanged.

  • Task Queue has been officially released, and is no longer an experimental feature. The API import paths that use ‘labs’ have been deprecated. Task queue storage will count towards an application’s overall storage quota, and will thus be charged for.

  • Developers can now enable Warmup Requests. By specifying a handler in an app’s app.yaml, App Engine will attempt to send a Warmup Request to initialize new instances before a user interacts with it. This can reduce the latency an end-user sees for initializing your application.

    More details here.

Version 1.4.1

  • The deadline for offline URL Fetch API requests for Python and Java have been increased to a maximum of 10 minutes. The default deadline for offline URL Fetch requests remains the same.

    This refers to URL Fetch requests sent from cron jobs and tasks. (see this)

    According to this: “You can set a deadline for a request, the most amount of time the service will wait for a response. By default, the deadline for a fetch is 5 seconds. The maximum deadline is 10 seconds.”

  • During application creation, developers can choose between two Datastore configurations: High Replication or Master/Slave. See this.

  • You can set your application’s datastore to read-only mode in the Admin Console. Any writes attempted while the app is set to read-only will throw a CapabilityDisabledError. This feature can be helpful for migrating or copying data between two applications. See read-only mode.

  • The Datastore Admin tool has been updated to allow copying of one app’s datastore to another. The destination app must have the Remote API enabled. See docs.


  • You can use the Python standard libraries urllib, urllib2 or httplib to make HTTP requests. When running in App Engine, these libraries perform HTTP requests using App Engine’s URL fetch service, which runs on Google’s scalable HTTP request infrastructure.