Python 3 Runtime Environment (original) (raw)

The Python runtime is the software stack responsible for installing your web service's code and its dependencies and running your App Engine service.

The Python runtime for App Engine in the standard environment is declared in the app.yamlfile:

runtime: pythonVERSION

Where VERSION is the Python MAJOR and MINOR version numbers. For example, to use the latest Python version, Python 3.14, specify314.

For other supported Python versions, and the corresponding Ubuntu version for your Python version, see the Runtime support schedule.

Python 3 versions

The latest supported Python version is 3.14. The Python runtime uses the latest stable release of the version that is specified in your app.yaml file. App Engine automatically updates to new patch versions, but it does not automatically update the minor version.

For example, your application might be deployed at Python 3.7.0 and later automatically updated to Python 3.7.1, but it will not be automatically updated to the next minor version Python 3.8.0.

Try it for yourself

If you're new to Google Cloud, create an account to evaluate how App Engine performs in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

Try App Engine free

App Engine runs Python apps in a container secured by gVisor on an up-to-date Ubuntu Linux distribution.

Dependencies

During deployment, App Engine uses the Python package managerpip to install dependencies defined in the requirements.txtmetadata file located in your project's root directory. You do not need to upload dependencies as App Engine performs a fresh install.

Dependency specification using the Pipfile/Pipfile.lock standard is currently not supported and your project must not have these files present.

Application startup

The runtime starts your app by running the command you specify in theentrypoint field in your app.yaml file. If you have configured a Gunicorn web server entrypoint in the app.yaml file, you must also add gunicorn to yourrequirements.txt file.

The entrypoint should start a web server that listens on the port specified by the PORT environment variable. For example:

entrypoint: gunicorn -b :$PORT main:app

The web framework that your app uses is responsible for routing requests to the appropriate handlers in your app.

If your app meets the following requirements, App Engine will start your app with the gunicorn web server if you don't specify the entrypoint field:

If you do not specify an entrypoint for the Python 3 runtime, App Engine configures and starts the default Gunicorn web server.

Entrypoint best practices

entrypoint: gunicorn -b :$PORT -w 2 main:app  

Other web frameworks

In addition to Django and Flask, you can use other web frameworks with App Engine, such asuwsgi andTornado. The following example shows how to use uwsgi with App Engine:

Environment variables

The following environment variables are set by the runtime:

Environment variable Description
GAE_APPLICATION The ID of your App Engine application. This ID is prefixed with 'region code~' such as 'e~' for applications deployed in Europe.
GAE_DEPLOYMENT_ID The ID of the current deployment.
GAE_ENV The App Engine environment. Set to standard.
GAE_INSTANCE The ID of the instance on which your service is currently running.
GAE_MEMORY_MB The amount of memory available to the application process, in MB.
GAE_RUNTIME The runtime specified in your app.yaml file.
GAE_SERVICE The service name specified in your app.yaml file. If no service name is specified, it is set to default.
GAE_VERSION The current version label of your service.
GOOGLE_CLOUD_PROJECT The Google Cloud project ID associated with your application.
PORT The port that receives HTTP requests.
NODE_ENV (Only available in the Node.js runtime) Set to production when your service is deployed.

You candefine additional environment variables in your app.yaml file, but the above values cannot be overridden, except for NODE_ENV.

HTTPS and forwarding proxies

App Engine terminates HTTPS connections at the load balancer and forwards requests to your application. Some applications need to determine the original request IP and protocol. The user's IP address is available in the standard X-Forwarded-For header. Applications that require this information should configure their web framework to trust the proxy.

Filesystem

The runtime includes a full filesystem. The filesystem is read-only except for the location /tmp, which is a virtual disk storing data in your App Engine instance's RAM.

Each instance of your application can use the App Engine metadata server to query information about the instance and your project.

You can access the metadata server through the following endpoints:

Requests sent to the metadata server must include the request headerMetadata-Flavor: Google. This header indicates that the request was sent with the intention of retrieving metadata values.

The following table lists the endpoints where you can make HTTP requests for specific metadata:

Metadata endpoint Description
/computeMetadata/v1/project/numeric-project-id The project number assigned to your project.
/computeMetadata/v1/project/project-id The project ID assigned to your project.
/computeMetadata/v1/instance/region The region the instance is running in.
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email The default service account email assigned to your project.
/computeMetadata/v1/instance/service-accounts/default/ Lists all the default service accounts for your project.
/computeMetadata/v1/instance/service-accounts/default/scopes Lists all the supported scopes for the default service accounts.
/computeMetadata/v1/instance/service-accounts/default/token Returns the auth token that can be used to authenticate your application to other Google Cloud APIs.

For example, to retrieve your project ID, send a request tohttp://metadata.google.internal/computeMetadata/v1/project/project-id.