Preparar archivos de configuración para el entorno de ejecución de Python 3

Para poder ejecutar tu aplicación en el tiempo de ejecución de Python 3 del entorno estándar de App Engine, es posible que tengas que cambiar algunos de los archivos de configuración que usa App Engine:

  • app.yaml. Este archivo contiene información sobre el código de tu aplicación, como el tiempo de ejecución y los controladores de la aplicación.

  • appengine_config.py. El tiempo de ejecución de Python 2 usa este archivo para acceder a bibliotecas de terceros y proporcionar valores para constantes y funciones de gancho. El entorno de ejecución de Python 3 no usa este archivo.

Actualizando app.yaml

Se ha modificado el comportamiento de algunos campos del app.yamlarchivo de configuración. Elimine los campos que ya no se admitan y actualice los demás como se describe en la siguiente tabla.

Campo Tipo de cambio Descripción
app_engine_apis Solo se aplica a Python 3 Debe tener el valor true si quieres acceder a los servicios agrupados antiguos de Python 3.
api_version
application_readable
builtins
Ya no se admite No aplicable en el entorno de ejecución de Python 3.
Threadsafe Ya no se admite Se presupone que todas las aplicaciones son seguras para subprocesos. Si tu aplicación no es segura para subprocesos, especifica un entrypoint configurando 1 subproceso por trabajador.

Por ejemplo, al usar la clase de instancia F4:
entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:app

Consulta las prácticas recomendadas para los puntos de entrada para ver el número de trabajadores recomendado para cada clase de instancia.
bibliotecas Ya no se admite Usa el archivo requirements.txt para declarar dependencias e instalar bibliotecas de cliente.
controladores: inicio de sesión Se admite si app_engine_apis es true. Si no utilizas los servicios agrupados antiguos para Python 3, usa Gestión de Identidades y Accesos (IAM) para gestionar a los usuarios.
controladores: secuencia de comandos Última modificación En el tiempo de ejecución de Python 2, se usa el campo script para dirigir las solicitudes entrantes a la secuencia de comandos de tu aplicación.

En el tiempo de ejecución de Python 3, debes usar un framework web con enrutamiento en la aplicación (como Flask o Django) en lugar de usar el campo script.

Para migrar tu archivo app.yaml al entorno de ejecución de Python 3, haz una de las siguientes acciones, en función de si el archivo contiene controladores estáticos y controladores de secuencias de comandos:

  • Si tu archivo app.yaml contiene controladores estáticos, haz una de las siguientes acciones para asegurarte de que las solicitudes de contenido dinámico se dirijan a la secuencia de comandos de tu aplicación:
    • Quita todos los campos script. A continuación, añade un campo entrypoint para iniciar un servidor web que ejecute tu aplicación. Las solicitudes que no coincidan con ninguno de tus controladores estáticos se dirigirán al servidor web que hayas especificado en el campo entrypoint. El servidor web y el framework web de tu aplicación son los responsables de enrutar la solicitud a la secuencia de comandos correcta.
    • Sustituye el valor de todos los campos script por auto. App Engine ejecutará automáticamente tu aplicación en un servidor web (siempre que cumpla algunos requisitos) y todas las solicitudes que coincidan con un controlador de secuencias de comandos se dirigirán al servidor web. El servidor web y el framework web de tu aplicación son los responsables de enrutar la solicitud a la secuencia de comandos correcta.
    • Si tu archivo app.yaml no contiene controladores estáticos, quita todos los campos script. Todas las solicitudes a tu aplicación se dirigirán al servidor web de la aplicación, y el framework de la aplicación dirigirá la solicitud a la secuencia de comandos correcta. También puedes añadir el campo entrypoint para personalizar el comportamiento de inicio predeterminado. Si tu app.yaml tiene ambos tipos de controladores, puedes quitar todos los controladores de secuencias de comandos que se marcarían como auto y dejar los controladores estáticos, así como los controladores auto que requieran otras directivas, como el controlador exclusivo para administradores del ejemplo siguiente.

El tratamiento de archivos estáticos no cambia.

Si usas alguno de los campos obsoletos, App Engine devolverá un error cuando despliegues tu aplicación.

Puedes usar los siguientes ejemplos para comparar las diferencias entre los archivos app.yaml:

Python 2

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: home.app

- url: /index\.html
  script: home.app

- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: admin.app
  login: admin

- url: /.*
  script: not_found.app

Python 3

runtime: python313
app_engine_apis: true

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: auto
  login: admin
.

Eliminando appengine_config.py

El tiempo de ejecución de Python 2 en el entorno estándar de App Engine usa el archivo appengine_config.py.

Este archivo se ignora en el entorno de ejecución de Python 3. En su lugar, el tiempo de ejecución de Python 3 usa el archivo requirements.txt estándar para instalar dependencias, incluidas las que usan código nativo.