Stay organized with collections
Save and categorize content based on your preferences.
You can use custom runtimes to add
additional functionality to a Python app running in the flexible environment. To configure
a custom runtime, you replace this line in your app.yaml file:
runtime:python
with this line:
runtime:custom
You must also specify a base image
by adding a Dockerfile in the same directory that contains the app.yaml file.
Visit the Custom runtimes
documentation to learn how to define a Dockerfile in a custom runtime.
Health Checking
By default, all programs running in the flexible environment receive health check requests.
If a base image supports health checking, you don't need to write any additional code. If it does not, you will need
to disable health checks, or write your own code to handle health check requests.
Selecting the Python version
The python runtime has Python 2.7.12 and Python 3.6.10 pre-installed. You can customize the Dockerfile to install other versions or alternative interpreters if needed.
You can specify a whether to use Python 2 or Python 3 in your application's Dockerfile when creating the virtual environment:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-03 UTC."],[[["\u003cp\u003eCustom runtimes allow adding extra features to Python apps in the flexible environment by replacing \u003ccode\u003eruntime: python\u003c/code\u003e with \u003ccode\u003eruntime: custom\u003c/code\u003e in the \u003ccode\u003eapp.yaml\u003c/code\u003e file.\u003c/p\u003e\n"],["\u003cp\u003eA Dockerfile must be included in the same directory as the \u003ccode\u003eapp.yaml\u003c/code\u003e file to specify a base image when using custom runtimes.\u003c/p\u003e\n"],["\u003cp\u003eBy default, apps in the flexible environment have health check requests; base images that don't support it must either disable them or implement custom code to handle them.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003epython\u003c/code\u003e runtime has Python 2.7.12 and Python 3.6.10, but you can install other versions by customizing the \u003ccode\u003eDockerfile\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eIn your \u003ccode\u003eDockerfile\u003c/code\u003e you can specify whether to use Python 2 or 3 by adding the corresponding line to your virtual environment.\u003c/p\u003e\n"]]],[],null,["# Customizing the Python runtime\n\nYou can use [custom runtimes](/appengine/docs/flexible/custom-runtimes) to add\nadditional functionality to a Python app running in the flexible environment. To configure\na custom runtime, you replace this line in your `app.yaml` file: \n\n runtime: python\n\nwith this line: \n\n runtime: custom\n\nYou must also [specify a base image](/appengine/docs/flexible/custom-runtimes/build#base)\nby adding a Dockerfile in the same directory that contains the `app.yaml` file.\n\nVisit the [Custom runtimes](/appengine/docs/flexible/custom-runtimes)\ndocumentation to learn how to define a Dockerfile in a custom runtime.\n\nHealth Checking\n---------------\n\nBy default, all programs running in the flexible environment receive [health check requests](/appengine/docs/flexible/custom-runtimes#health_check_requests).\nIf a base image supports health checking, you don't need to write any additional code. If it does not, you will need\nto disable health checks, or write your own code to handle health check requests.\n\nSelecting the Python version\n----------------------------\n\nThe `python` runtime has [Python 2.7.12](https://www.python.org/downloads/release/python-2712/) and [Python 3.6.10](https://www.python.org/downloads/release/python-3610/) pre-installed. You can customize the `Dockerfile` to install other versions or alternative interpreters if needed.\n\nYou can specify a whether to use Python 2 or Python 3 in your application's `Dockerfile` when creating the virtual environment: \n\n # Python 3\n RUN venv /env -p python3.7\n\n # Python 2 (implicit)\n RUN virtualenv /env\n\n # Python 2 (explicit)\n RUN virtualenv /env -p python2.7"]]