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

Antes de que puedas ejecutar tu app en el entorno de ejecución de Python 3 del entorno estándar de App Engine, es posible que debas cambiar algunos de los archivos de configuración que usa App Engine:

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

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

Actualiza app.yaml

Se modificó el comportamiento de algunos campos del archivo de configuración app.yaml. Quita los campos que ya no sean compatibles y actualiza otros campos como se describe en la siguiente tabla.

Campo Tipo de cambio Descripción
app_engine_apis Solo aplicable a Python 3 Se debe configurar como true si deseas acceder a los servicios agrupados en paquetes heredados para Python 3.
api_version
application_readable
builtins
Ya no son compatibles. No aplicable en el entorno de ejecución de Python 3.
threadsafe Ya no son compatibles. Se presume que todas las aplicaciones son seguras para usar en subprocesos. Si tu aplicación no tiene protección de subprocesos, especifica un entrypoint y configura 1 subproceso por trabajador.

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

Consulta las prácticas recomendadas de puntos de entrada para la cantidad recomendada de trabajadores en cada clase de instancia.
bibliotecas Ya no son compatibles. Usa el archivo requirements.txt para declarar dependencias y, además, instalar bibliotecas cliente.
controladores: acceso Compatible si app_engine_apis es true Si no usas los servicios agrupados en paquetes heredados para Python 3, usa Identity and Access Management (IAM) en la administración de usuarios.
controladores: secuencia de comandos Modificado En el entorno de ejecución de Python 2, usa el campo script para enrutar las solicitudes entrantes a la secuencia de comandos de tu app.

En el entorno de ejecución de Python 3, debes usar un framework web con enrutamiento integrado en la app (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, realiza una de las siguientes acciones, según si el archivo contiene controladores estáticos y controladores de secuencias de comandos:

  • Si tu archivo app.yaml contiene controladores estáticos, realiza una de las siguientes acciones para asegurarte de que las solicitudes de contenido dinámico se enruten a la secuencia de comandos de tu aplicación:
    • Quita todos los campos script. Luego, agrega 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 especificaste en el campo entrypoint. El servidor web y framework de tu aplicación son responsables de enrutar la solicitud a la secuencia de comandos correcta.
    • Reemplaza el valor de todos los campos script por auto. App Engine ejecutará tu aplicación en un servidor web de forma automática (siempre que tu aplicación cumpla con algunos requisitos), y todas las solicitudes que coinciden con un controlador de secuencia de comandos se dirigirán al servidor web. El servidor web y el framework de tu aplicación son 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 app se dirigirán a su servidor web, y el framework de tu app enrutará la solicitud a la secuencia de comandos correcta. De forma opcional, puedes agregar un 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 requieren otras directivas, como el controlador de solo administrador en el ejemplo a continuación.

El manejo de archivos estáticos no se modifica.

Si usas cualquiera de los campos obsoletos, App Engine muestra un error cuando implementas tu app.

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: python311
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

Quita appengine_config.py

El entorno 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 entorno de ejecución de Python 3 usa el archivo requirements.txt estándar para instalar dependencias, incluidas las dependencias que usan código nativo. Para obtener más información, consulta Especifica dependencias en el entorno de ejecución de Python 3.