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

Cómo implementar una aplicación de Python

Implementa tu aplicación para subirla y ejecutarla en App Engine. Cuando implementas tus aplicaciones, creas versiones de esas aplicaciones y los servicios correspondientes en App Engine. Puedes implementar aplicaciones completas, incluidos todos los archivos de configuración y de código fuente, o bien puedes implementar y actualizar versiones o archivos de configuración individuales.

Para implementar tus aplicaciones de manera programática, usa la API de Administrador.

Si usas la herramienta obsoleta appcfg para implementar apps, consulta la referencia de appcfg para obtener información sobre el uso de la herramienta.

Antes de comenzar

Antes de que implementes tu app:

  • El propietario del proyecto de Cloud debe crear la aplicación de App Engine.

  • Asegúrate de que tu cuenta de usuario incluya los privilegios requeridos.

  • Otorga a Cloud Build permiso para implementar apps en tu proyecto. Cuando implementas tu aplicación, App Engine usa Cloud Build para compilar la aplicación en un contenedor y luego implementar el contenedor en el entorno de ejecución. Cloud Build no tiene permiso para implementar aplicaciones de Phyton 2 de forma predeterminada, por lo que debes otorgar permiso antes de poder implementar aplicaciones.

Instala la herramienta de línea de comandos de gcloud

Para implementar tu app con la herramienta de gcloud, debes descargar, instalar e inicializar el SDK de Cloud.

Descargar el SDK

Si ya tienes la herramienta de gcloud instalada y deseas configurarla para usar un ID de proyecto de Cloud distinto del que usaste en su inicialización, consulta Administra configuraciones del SDK de Cloud.

Usa un proxy

Si ejecutas el comando de implementación desde un sistema que utiliza un proxy HTTP o HTTPS, debes configurar la herramienta para que pueda comunicarse a través del proxy.

Ejecuta los siguientes comandos para configurar la herramienta de gcloud:

gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]

También puedes establecer username y password para el proxy. Para obtener más información, consulta la configuración de gcloud.

Implementa una aplicación

Para implementar tu aplicación en App Engine, usa el comando gcloud app deploy desde la ubicación en la que se encuentran tus archivos de configuración, por ejemplo, app.yaml.

Elige ID de versión únicos

El ID de versión de las instancias escaladas de forma manual debe comenzar con una letra para distinguirlo del ID de las instancias numéricas. De esta manera, te aseguras de que las solicitudes se envían al destino correcto y evitas la ambigüedad en los patrones de URL como 123-dot-my-service.[REGION_ID].r.appspot.com, que pueden interpretarse de dos maneras:

  • Si existe la versión 123, la solicitud se enviará a la versión 123 del servicio my-service.
  • Si la versión 123 no existe, la solicitud se enruta en el ID de instancia 123 en el que se ejecutan las versiones del servicio my-service.

Puedes nombrar de la manera que quieras las versiones de las instancias configuradas con escalamiento automático o escalamiento básico, ya que no se admite la orientación hacia esas instancias.

gcloud app deploy [CONFIGURATION_FILES]

De forma predeterminada, el comando implementa el archivo de configuración app.yaml desde el directorio actual. Si ejecutas el comando desde un directorio que no contiene el app.yaml de tu app o si deseas implementar varias apps, reemplaza [CONFIGURATION_FILES] con la ruta de acceso a una o más archivos de configuración. Usa un solo espacio en blanco para separar los nombres de ruta.

Marcas opcionales:

  • --version: Especifica un ID de versión personalizado. De forma predeterminada, App Engine genera un ID de la versión.
  • --no-promote: Implementa tu app sin enrutar automáticamente todo el tráfico a esa versión. De forma predeterminada, cada versión que implementes se configura automáticamente para recibir todo el tráfico.
  • --project: Especifica un ID de proyecto de Cloud alternativo al que inicializaste como predeterminado en la herramienta de gcloud.

Para obtener más información, consulta la referencia de gcloud app deploy o ejecuta gcloud help desde la línea de comandos.

Ejemplos:

gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]

Si implementas una versión que especifica el mismo ID de versión que una que ya existe en App Engine, los archivos que implementes reemplazarán la versión existente. Esto puede generar problemas si la versión está procesando tráfico, ya que podría obstaculizarse el tráfico hacia tu aplicación. Puedes evitar los posibles problemas si implementas tu versión nueva con un ID de versión distinto y luego llevas el tráfico a esa versión.

Implementa aplicaciones de varios servicios

Cuando tu aplicación incluye varios servicios, puedes implementar y actualizar servicios determinados de manera individual o todos los servicios en simultáneo. La implementación de actualizaciones en servicios puede incluir la actualización de archivos de configuración individuales o la actualización del código fuente en las versiones correspondientes.

Por ejemplo, puedes implementar y crear dos versiones en App Engine, y hacer que cada versión se ejecute en su propio servicio. La primera versión actúa como servicio de frontend y la otra como backend de tu app. Después, puedes implementar archivos de configuración individuales para actualizar solo la configuración de un servicio. También puedes optar por implementar una versión nueva en un servicio para actualizar el código fuente del frontend, del backend o de ambos de manera simultánea.

Requisitos para servicios varios

Para implementar y actualizar los servicios múltiples de tu aplicación, utilizas los mismos comandos de implementación y debes cumplir los siguientes requisitos:

  • Inicialmente, debes implementar una versión de tu aplicación en el servicio default, antes de poder crear y, luego, implementar los servicios posteriores.

  • Debes especificar el ID de tu servicio en el archivo de configuración app.yaml de la versión correspondiente. Para especificar el ID de servicio, incluye la definición del elemento service: [YOUR_SERVICE_ID] en cada archivo de configuración. De forma predeterminada, si se excluye esta definición de elemento del archivo de configuración, se implementa la versión en el servicio default.

  • Tienes que especificar todos los archivos de configuración app.yaml correspondientes en tu comando de implementación para implementar varios servicios en simultáneo.

Implementa varios servicios

Desde el directorio raíz de la aplicación, en el que se ubican los archivos de configuración, ejecuta el comando de implementación, y especifica las rutas de acceso y los nombres de archivo relacionados para cada servicio del archivo app.yaml.

gcloud app deploy [CONFIGURATION_FILES]

En este, [CONFIGURATION_FILES] es la ruta de acceso y el nombre de uno o más archivos de configuración, separados con un espacio.

Ejemplo
gcloud app deploy main/app.yaml service1/app.yaml service2/app.yaml

A medida que los distintos servicios se implementen correctamente, recibirás la verificación a través de la línea de comandos.

Actualiza índices

Para crear o actualizar los índices que utilizan tus aplicaciones, sube el archivo de configuración index.yaml a Datastore. Los índices que todavía no existen se crean luego de subir el archivo de configuración.

Puede que Datastore tarde un tiempo en crear todos los índices y, por lo tanto, estos no estarán disponibles de inmediato para App Engine. Si tu app ya está configurada para recibir tráfico, pueden generarse excepciones ante consultas que requieran un índice que aún se encuentra en proceso de creación.

A fin de evitar las excepciones, tienes que darle tiempo al proceso para que se creen todos los índices, por ejemplo:

  • Sube el archivo de configuración index.yaml a Datastore antes de implementar tu versión:

    1. Sube el archivo index.yaml a Datastore:

        <pre class="prettyprint lang-sh">gcloud datastore indexes create index.yaml</pre>
        For information, see the <a
        href="/sdk/gcloud/reference/datastore/"><code>gcloud
        datastore</code> reference</a>.
      
    2. Utiliza Cloud Console para supervisar el estado de todos tus índices:

      Ir a la página de Datastore

    3. Una vez que se hayan creado todos los índices, implementa la versión nueva en App Engine.

  • Crea los índices antes de dividir o migrar el tráfico a tu versión:

    1. Implementa la versión nueva sin enrutar el tráfico a esa versión: debes especificar los archivos app.yaml y index.yaml, y también incluir la marca --no-promote para que no se enrute el tráfico a la versión:
      gcloud app deploy app.yaml index.yaml --no-promote
    2. Utiliza Cloud Console para supervisar el estado de todos tus índices:

      Ir a la página de Datastore

    3. Una vez que se hayan creado todos los índices, utiliza Cloud Console para dividir o migrar el tráfico a tu versión:

      Ir a la página Versiones

Si quieres obtener más información sobre índices, consulta Cómo configurar los índices en Datastore.

Solución de problemas

A continuación, se muestran algunos mensajes de error comunes que puedes encontrar:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Si el proyecto de Cloud no incluye la aplicación de App Engine requerida, el comando gcloud app deploy puede fallar cuando intenta ejecutar el comando gcloud app create. Solo las cuentas con función de propietario tienen los permisos necesarios para crear aplicaciones de App Engine.
Command not found
Si no creaste vínculos simbólicos para las herramientas de dev_appserver.sh cuando instalaste el SDK de App Engine (obsoleto), es posible que debas especificar la ruta completa del directorio para ejecutar la herramienta, ejemplo: [PATH_TO_CLOUD_SDK]/bin/dev_appserver.py.
Import Error
Si instalaste tanto el SDK de Cloud como el SDK de App Engine original, es posible que las entradas a tu RUTA DE ACCESO entren en conflicto unas con otras y causen errores de importación. Si recibiste errores cuando ejecutaste los comandos del SDK de Cloud, intenta utilizar, de forma explícita, el SDK original de App Engine. Puedes mover la entrada del SDK original de App Engine hacia más adelante en tu RUTA DE ACCESO para que esos comandos tengan prioridad. Como alternativa, puedes ejecutar el comando especificando la ruta completa del directorio: [PATH_TO_APP_ENGINE_SDK]/dev_appserver.py.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
Antes de que puedas implementar y crear los múltiples servicios de tu aplicación, primero debes implementar y crear el servicio default. Para obtener detalles sobre cómo implementar una versión en el servicio default, consulta Cómo implementar aplicaciones de varios servicios.
Too Many Versions (403)
App Engine tiene un límite en cuanto a la cantidad de versiones implementadas de tu aplicación. Existen diferencias entre el límite para las aplicaciones gratuitas y las implementadas. Puedes usar Cloud Console para borrar una versión antigua y, luego, subir tu código más reciente.
Otro error de implementación
Si tu implementación falla, asegúrate de que la API de Cloud Build esté habilitada en tu proyecto. App Engine habilita esta API automáticamente la primera vez que implementas una aplicación, pero si alguien inhabilitó la API, las implementaciones fallarán.

Qué sigue