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.
Actualizando 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 Para migrar tu archivo
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: python312
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.