One after another, the arguments against using Python 3 in production keep dropping away. Yesterday, Google consigned another one to oblivion: “But there’s no Python 3 support on Google App Engine!”
Well, guess what?
Google App Engine’s Flexible Environment, which scales apps based on demand, has launched support for Python 3.4 as a beta-test offering.
The runtimes for App Engine Flexible run as Docker containers, with the Dockerfilesavailable on GitHub. Developers can build the container locally, test their applications against it, then deploy the app alone to App Engine. It’s also possible to customize the runtime, upload it as a Docker container to App Engine, and run the app in conjunction with it.
Both Python 2.7 and Python 3.4 are available within the same container, so applications that need both versions of Python for whatever reason can access them both simultaneously. (Nuitka, for instance, uses some libraries that are not yet 3.x-compatible.) Google’s support for Python in App Engine will continue to include Python 2.7, ostensibly for as long as that language is supported (until 2020).
Now the bad news: Because Python 3.4 is the only supported version of Python 3, that means all the features in the language added in Python 3.5, like
async/await, aren’t available through App Engine’s runtime.
Developers can work around this by creating their own custom containers with the Python 3.5 runtime and executing them. The downside: You have to roll your own handling of some Google App Engine features, like health checks or start/stop requests.