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

Archivos de configuración

Cada versión de un servicio se define en un archivo .yaml, que da el nombre del servicio y la versión. El archivo YAML suele llevar el mismo nombre que el servicio que define, pero esto no es obligatorio. Si implementas distintas versiones de un servicio, puedes crear varios archivos YAML en el mismo directorio, uno para cada versión.

En general, creas un directorio para cada servicio, que contiene los archivos YAML del servicio y el código fuente asociado. Los archivos de configuración opcionales de nivel de aplicación (dispatch.yaml, cron.yaml, index.yaml y queue.yaml) se incluyen en el directorio de la aplicación de nivel superior. El siguiente ejemplo muestra tres servicios. En service1 y service2, los archivos de origen están en el mismo nivel que el archivo YAML. En service3, hay archivos YAML para dos versiones.

Grafo de jerarquías de los servicios YAML

En el caso de proyectos pequeños y simples, todos los archivos de la aplicación pueden ubicarse en el mismo directorio.

Grafo de jerarquías de los servicios YAML pequeños

Todos los archivos YAML deben incluir un parámetro de versión. Para definir el servicio predeterminado, puedes incluir explícitamente el parámetro service: default o dejar el parámetro del servicio fuera del archivo.

El archivo de configuración de cada servicio define el tipo de escalamiento y la clase de instancia para un servicio o versión específicos. Se usan diferentes parámetros de escalamiento, según el tipo de escalamiento que especifiques. Si no lo especificas, la opción predeterminada es el ajuste de escala automático. La configuración de clase de instancia y escalamiento se describe en la sección referencia de app.yaml .

Para cada servicio, también puedes especificar una configuración que asigne las solicitudes de URL a secuencias de comando específicas y que identifique los archivos estáticos, lo que aumenta la eficiencia del servidor. Esta configuración también se incluye en el archivo YAML y se describe en la sección referencia de app.yaml.

Servicio predeterminado

Todas las aplicaciones tienen un solo servicio predeterminado. Puedes definir el servicio predeterminado en el app.yaml con la configuración service: default, pero no es necesario hacerlo. Todos los parámetros de configuración relevantes para los servicios pueden aplicarse al servicio predeterminado.

Archivos de configuración opcional

Estos archivos de configuración controlan características opcionales que se aplican a todos los servicios de la aplicación:

  • dispatch.yaml
  • queue.yaml
  • index.yaml
  • cron.yaml
  • dos.yaml

Para implementar actualizaciones de estos archivos de configuración en App Engine, ejecuta el siguiente comando desde el directorio donde se encuentran:

    gcloud app deploy [CONFIG_FILE]

Ejemplo

Este es un ejemplo de cómo podrías configurar los archivos YAML para una aplicación que tiene tres servicios: uno predeterminado que controla solicitudes web y dos servicios que controlan solicitudes móviles y procesamiento de backend.

Para comenzar, define un archivo de configuración llamado app.yaml que manejará todas las solicitudes relacionadas con la Web:

runtime: python27
api_version: 1
threadsafe: true

Si el ID del proyecto de Cloud Console para esta app es simple-sample, esta configuración crearía un servicio predeterminado con ajuste de escala automático y una dirección pública de https://simple-sample.uc.r.appspot.com.

Luego, imagina que quieres crear un servicio a fin de controlar las solicitudes web móviles. Para la conveniencia de los usuarios de dispositivos móviles, en este ejemplo, la latencia pendiente máxima será solo de un segundo y siempre tendremos, al menos, dos instancias inactivas. Para configurar esto, se debe crear un archivo de configuración mobile-frontend.yaml con los siguientes contenidos:

service: mobile-frontend
runtime: python27
api_version: 1
threadsafe: true

automatic_scaling:
  min_idle_instances: 2
  max_pending_latency: 1s

El servicio que crea este archivo sería alcanzable en https://mobile-frontend-dot-simple-sample.uc.r.appspot.com.

Por último, agrega un servicio, llamado my-service, para manejar el trabajo de backend estático. Este podría ser un trabajo continuo que exporta datos de Datastore a BigQuery. El volumen de trabajo es relativamente fijo, por lo que solo necesitas 1 servicio residente en un momento determinado. Además, dado que se necesitará que estos trabajos controlen grandes volúmenes de procesamiento en la memoria, es conveniente tener servicios con una configuración de memoria aumentada. Para configurar esto, se debe crear un archivo de configuración my-service.yaml con los siguientes contenidos.

service: my-service
runtime: python27
api_version: 1
threadsafe: true

instance_class: B8
manual_scaling:
  instances: 1

El servicio que crea este archivo sería alcanzable en https://my-service-dot-simple-sample.uc.r.appspot.com.

Observa la configuración manual_scaling:. El parámetro instances: le indica a App Engine cuántas instancias se deben crear para este servicio.

Es posible que también quieras descargar esta aplicación de demostración de Python y ver de qué se trata.