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 fundamentales 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 diferencias siguientes 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 solo requieren actualizaciones menores en tu código, como cambiar la declaración print a una función print(). Otros cambios pueden requerir actualizaciones significativas en tu código, como actualizar la forma en la 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 se modificaron cuando se migraron 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. En el caso del 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 en funcionamiento y que se puede probar durante todo el proceso:

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

    Cuando finalices este paso, tu aplicación de Python 2 ya no debería usar ninguna API de 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. Varios cambios importantes afectan la configuración en app.yaml, incluidos algunos de los siguientes:

    • Se supone que las apps son seguras para usar en subprocesos. Si tu app no es segura para subprocesos, debes hacer algunos cambios en el archivo app.yaml a fin de evitar el potencial de aumento de costos.
    • El archivo app.yaml ya no enruta solicitudes a tus secuencias de comandos. En su lugar, se te pedirá que uses un framework web con enrutamiento integrado en la app y actualices o quites todos los controladores script en app.yaml.
  4. Prueba y, luego, implementa tu app actualizada en un entorno de Python 3.

    Es posible que tengas que dedicar cierto tiempo a solucionar problemas de compatibilidad que no son visibles hasta que ejecutas tu app actualizada en un entorno de Python 3.

    Después de pasar todas las pruebas, implementa la aplicación actualizada en App Engine, pero evita que el tráfico se enrute automáticamente a la versión nueva. 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. Si encuentras problemas, puedes enrutar todo el tráfico a una versión estable hasta que el problema se solucione.