Python 2 ya no es compatible con la comunidad. Recomendamos que migres las apps de Python 2 a Python 3.

Migra al entorno de ejecución estándar de Python 3

A partir del 1 de enero de 2020, la comunidad de Python dejará de actualizar, corregir errores o solucionar problemas de seguridad de parches para Python 2.7. Recomendamos migrar las aplicaciones que aún se ejecutan en el entorno de ejecución de Python 2 del entorno estándar de App Engine al entorno de ejecución de Python 3 lo antes posible. Para obtener más información, consulta Compatibilidad con Python 2 en Google Cloud.

Diferencias clave entre los entornos de ejecución de Python 2 y Python 3

La mayoría de los cambios que debes realizar durante la migración provienen de las siguientes diferencias entre los entornos de ejecución de Python 2 y Python 3:

Problemas de compatibilidad entre Python 2 y Python 3

Cuando Python 3 se lanzó por primera vez en 2008, se introdujeron varios cambios incompatibles con versiones anteriores en el lenguaje. Algunos de estos cambios solo requieren actualizaciones menores en tu código, como cambiar la declaración print por una función print(). Otros cambios pueden requerir actualizaciones significativas en tu código, como actualizar la forma en que manejas los datos binarios, el texto y las strings.

Muchas bibliotecas populares de código abierto, incluidas las bibliotecas estándar de Python, también cambiaron cuando se trasladaron de Python 2 a Python 3.

No hay servicios de App Engine agrupados en el entorno de ejecución de Python 3

A partir del entorno de ejecución de Python 3, el entorno estándar de App Engine ya no incluye los servicios de App Engine agrupados como Memcache y las listas de tareas en cola. En su lugar, Google Cloud proporciona productos independientes que son equivalentes a la mayoría de los servicios agrupados en el entorno de ejecución de Python 2. Para los servicios agrupados que no están disponibles como productos separados en Google Cloud, como procesamiento de imágenes, búsqueda y mensajería, puedes usar proveedores de terceros o algunas otras soluciones, como se sugiere en esta guía de migración.

Quitar los servicios de App Engine integrados permite que el entorno de ejecución de Python 3 admita una experiencia de desarrollo completamente idiomática en Python. En el entorno de ejecución de Python 3, escribes una app de Python estándar que es totalmente portátil y se puede ejecutar en cualquier entorno de Python estándar, incluido App Engine.

Framework web necesario para enrutar solicitudes de contenido dinámico

En el entorno de ejecución de Python 2, puedes crear controladores de URL en el archivo app.yaml para especificar qué aplicación ejecutar cuando se solicita un patrón de URL o una URL específica.

En el entorno de ejecución de Python 3, tu app necesita usar un framework web como Flask o Django para enrutar solicitudes de contenido dinámico en lugar de usar controladores de URL en app.yaml. Para el contenido estático, puedes seguir creando controladores de URL en el archivo app.yaml de tu app.

Descripción general del proceso de migración

Recomendamos el siguiente enfoque incremental para la migración, en el que mantienes una aplicación que funcione y se pueda probar durante todo el proceso:

  1. Migra los servicios agrupados de App Engine en tu app de Python 2 a servicios de Google Cloud, servicios de terceros o a otros reemplazos recomendados. Prueba tu app después de migrar cada servicio.

    Cuando finalices este paso, tu app de Python 2 ya no usará ninguna API google.appengine.

  2. Actualiza tu app para que sea compatible con Python 2 y Python 3.

    Hay varias soluciones disponibles para ayudar con esta actualización. Por ejemplo, usa Python-Future o Python-Modernize.

    Para obtener más información sobre este paso del proceso de migración, consulta Transferencia del código de Python 2 a Python 3 en el sitio de documentación de Python Software Foundation.

  3. Prepara los archivos de configuración de App Engine para el entorno de ejecución de Python 3.

  4. Prueba y, luego, implementa tu app actualizada en un entorno de Python 3.

    Es posible que deba dedicar un tiempo considerable a solucionar problemas de compatibilidad que no son visibles hasta que ejecutas tu aplicación actualizada en un entorno de Python 3.

    Después de pasar todas las pruebas, usa la división del tráfico para migrar lentamente el tráfico de tu app en el entorno de ejecución de Python 2 a la app en el entorno de ejecución de Python 3.