Friday, March 8, 2013

Python 2.5, thanks for the good times

Python 2.5 has a special place in the heart of any Google App Engine developer, as it was the first runtime we launched way back in 2008. Since then, both Python and App Engine have advanced a great deal.

A year ago we announced our support for Python 2.7, which brings syntactic and semantic improvements to the language and includes powerful features like threading and a large selection of third-party libraries.

Not only does Python 2.7 make developers’ lives easier, the runtime is extremely cost-effective. Our customers have taken advantage of features like concurrent requests to reduce their front-end instance costs by more than 70% while handling the same amount of traffic.

Not surprisingly, the Python 2.7 runtime has proven to be extremely popular. Just over a year after launch, more than 78% of active Python applications on App Engine are using the new runtime, and more are being added every minute.

As both Python and App Engine evolve, we must occasionally make hard choices about which legacy runtimes we should continue to support. Today we are announcing the deprecation of the Python 2.5 runtime. The deprecation period will follow the guidelines set in our terms of service.

What does this mean?

  • We will continue to run Python 2.5 applications throughout the deprecation period. For most customers, upgrading to Python 2.7 is trivial as most elements of Python 2.5 are forwards-compatible with Python 2.7. We’ve prepared a handy migration guide that covers the steps to migrate in detail.
  • If your application is still using the already deprecated Master/Slave Datastore, then you should first plan the migration to our more reliable High Replication Datastore, as the Master/Slave Datastore is not accessible from Python 2.7.
  • Future versions of the App Engine Python Development SDK will display warnings to developers deploying updates to a deprecated runtime.
  • Starting from January 2014, we will no longer allow new applications to be created using the Python 2.5 runtime.

We encourage all developers using Python 2.5 to consider migrating as soon as possible. We’re confident that the vast majority of our customers will find the upgrade straightforward and the benefits substantial.

If you’re considering migrating, here are some useful resources:

If you have any questions about this deprecation, we encourage you to contact us at

-Posted by Andrew Jessup, Product Manager


Tom said...

Seems reasonable, given the degree of compatibility between 2.5 and 2.7.

I'm sure that one less runtime makes your lives easier.

Speaking of which, would love to see you introduce a more general purpose runtime, e.g. using something like the technology you use with Chrome's NaCl (I believe this is LLVM).

Matt Iversen said...

When are you planning to support Python 3?

It became available the very same year you started up, but still no support!

TheBashar99 said...

One thing I really hate about these notices is they only say the feature will be deprecated in accordance with their stated policy. Don't make me have to look it up and do the math. Just state plainly in the post when the fricken deprecation date is. Sheesh.

Nathan Youngman said...

One step closer to adding Python 3.x support?

Heroku's buildpack already supports it.

Software/setup said...

I think present time 90% developer used Python 2.5 for consider migrating as soon as possible. One thing about these notices is they only say the feature will be deprecated in accordance with their stated policy.

DF said...

What doesn't migrate so easily is old apps on app-engine-patch, itself deprecated. Moreover, I've tried a couple of times to sort through the mess that is Django on app engine.

The only thing to do is rewrite our app on something else (e.g., webapp2), but that requires more time than I've had to devote.

Sargis said...

It seems that Python 2.7 and threadsafe are not supported in the dev_appserver. I followed migration guide and getting Fatal error when loading application configuration:
threadsafe cannot be enabled with CGI handler
. How are we supposed to test our app with Python 2.7 to ensure backward compatibility?

Nathan Youngman said...

+Sarkis Dallakian I'm pretty sure that thread-safe mode requires you to use WSGI. But I think you can still use Python 2.7 with CGI (without thread-safe mode).

Unknown said...

Python 2.5 was definitely a very handy version and like everything else it has to go out some day. There's a fair bit of compatibility between 2.5 and 2.7 and it seems worth the shift. Less runtime is sure to be one big bonus.