Guía de inicio rápido para Python en el entorno flexible de App Engine

En esta guía de inicio rápido aprenderás a crear una pequeña aplicación de App Engine que muestra un mensaje corto.

Antes de empezar

Antes de ejecutar y desplegar esta muestra, sigue estos pasos:

  1. Usa la consola de GCP para crear un nuevo proyecto de GCP, crear una aplicación de App Engine y habilitar la facturación:
    Ir a App Engine

    Cuando se te solicite, selecciona la región donde deseas ubicar tu aplicación de App Engine y luego habilita la facturación.

  2. Sigue estos pasos previos localmente:
    1. Descarga e instala git.
    2. Prepara tu entorno para el desarrollo de Python.
    3. Descarga e instala el SDK de Google Cloud y luego inicializa la herramienta gcloud:
      Descargar el SDK
  3. También puedes usar Google Cloud Shell, que viene con git y el SDK de Google Cloud ya instalados, y muchas otras funciones, como compatibilidad de lenguajes y editores de código.

    Después de que se inicie Google Cloud Shell, puedes continuar con el resto de este tutorial y ejecutar tus comandos dentro de Cloud Shell.

Ubicaciones de App Engine

App Engine es regional, lo que significa que la infraestructura que ejecuta las aplicaciones se encuentra en una región específica y está administrada por Google para que esté disponible de manera redundante en todas las zonas de esa región.

Cumplir con los requisitos de latencia, disponibilidad o durabilidad son factores principales para seleccionar la región donde se ejecutan tus aplicaciones. En general, puedes seleccionar la región más cercana a los usuarios de la aplicación, pero deberías tener en cuenta la ubicación de los demás productos y servicios de GCP que utiliza tu aplicación. El uso de servicios en varias ubicaciones puede afectar a la latencia de la aplicación y a los precios.

App Engine está disponible en las siguientes regiones:

  • northamerica-northeast1 (Montreal)
  • us-central (Iowa)
  • us-east1 (Carolina del Sur)
  • us-east4 (Virginia del Norte)
  • southamerica-east1 (São Paulo)*
  • europe-west (Bélgica)
  • europe-west2 (Londres)
  • europe-west3 (Fráncfort)
  • asia-northeast1 (Tokio)
  • asia-south1 (Bombay)
  • australia-southeast1 (Sídney)

* Para los clientes que utilizan la región de São Paulo, todos los SLA de productos regionales siguen vigentes. Sin embargo, la disponibilidad o el rendimiento de las funciones compatibles en más de una región y dentro de cada una de ellas podría verse reducido temporalmente si dicha funcionalidad abarca América del Norte y América del Sur.

No es posible cambiar la región de una aplicación después de configurarla.

Si ya has creado una aplicación de App Engine, puedes consultar la región ejecutando el comando gcloud app describe o abriendo el panel de App Engine en la consola de GCP. La región de tu aplicación de App Engine aparece en http://[YOUR_PROJECT_ID].appspot.com.

Esta guía de inicio rápido muestra una aplicación sencilla de Python escrita con el framework Flask que se puede desplegar en App Engine. Aunque esta muestra usa Flask, puedes utilizar cualquier framework que cumpla los requisitos anteriores. Otros marcos alternativos son, por ejemplo, Django, Pyramid{/}, Bottle, web.py, Tornado y más. Para recorrer una muestra que utiliza Django, consulta acerca de la manera de ejecutar Django en el entorno flexible de App Engine.

Descargar la aplicación Hello World

Hemos creado una sencilla aplicación Hello World para Python, para que puedas tener una idea rápida de cómo desplegar una aplicación en el entorno flexible de App Engine. Sigue estos pasos desde una línea de comandos para descargar Hello World en tu máquina local.

Descarga la aplicación de muestra y navega hasta el directorio de la aplicación:

  1. Clona el repositorio de la aplicación de muestra Hello World en la máquina local:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    

    También puedes descargar la muestra como un archivo ZIP y extraerla.

  2. Accede al directorio que contiene el código de muestra:

    cd python-docs-samples/appengine/flexible/hello_world
    

Ejecutar Hello World en tu máquina local

Mac OS / Linux

Para ejecutar la aplicación Hello World en tu ordenador local:

  1. Si no tienes virtualenv, instálalo usando pip.

    sudo pip install virtualenv
    
  2. Crea un entorno de Python aislado e instala dependencias:

    virtualenv env
    source env/bin/activate
    pip install -r requirements.txt
    
  3. Ejecuta la aplicación:

    python main.py
    
  4. Introduce la siguiente dirección en el navegador web:

    http://localhost:8080
    

Windows

Si has instalado el SDK de Google Cloud, ya debes tener instalado Python 2.7, generalmente en C:\python27_x64\ (para sistemas de 64 bits). Invocamos la instalación de paquetes de Python mediante el uso de Powershell.

  1. Instala Powershell 3.0 o superior si aún no lo has hecho.

  2. Haz clic con el botón derecho en el acceso directo a Powershell e inícialo como administrador.

  3. Intenta ejecutar el comando python. Si no se encuentra, añade Python a la PATH de tu entorno.

    $env:Path += ";C:\python27_x64\"
    
  4. Instala el administrador de paquetes pip para Python y crea un entorno de Python aislado con virtualenv, para no instalar las dependencias de Hello World en todo el sistema en el siguiente paso.

    iwr https://bootstrap.pypa.io/get-pip.py -OutFile get-pip.py
    python get-pip.py
    python -m pip install virtualenv
    python -m virtualenv env
    
  5. Activa tu entorno de Python aislado otorgando permisos de secuencias descargadas para ejecutar e instalar los requisitos de Hello World.

    Set-ExecutionPolicy RemoteSigned
    .\env\Scripts\activate
    python -m pip install -r requirements.txt
    
  6. Finalmente, ejecuta la aplicación y consulta Hello World en http://localhost:8080.

    python main.py
    

Puedes ver el mensaje Hello World de la aplicación de muestra en la página.

En la ventana de tu terminal, presiona Ctrl + C para salir del servidor web.

Desplegar y ejecutar Hello World en App Engine

Para desplegar tu aplicación en el entorno flexible de App Engine:

  1. Despliega la aplicación Hello World ejecutando el siguiente comando desde el directorio hello_world:
    gcloud app deploy
    Más información sobre los indicadores opcionales

    Indicadores de comando gcloud habituales

    • Incluye el indicador --version para especificar un ID que identifique de manera única esa versión de tu aplicación; de lo contrario, se generará uno automáticamente. Ejemplo: --version [YOUR_VERSION_ID]
    • Incluye un indicador --project para especificar un ID de proyecto GCP distinto al inicializado de forma predeterminada en la herramienta gcloud. Ejemplo: --project [YOUR_PROJECT_ID]

    Ejemplo:

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    Para obtener más información sobre el despliegue de tu aplicación desde la línea de comandos, consulta el apartado sobre cómo probar y desplegar tu aplicación. Para obtener una lista de todos los indicadores de comando, consulta la referencia de gcloud app deploy.

  2. Inicia el navegador y consulta la aplicación en http://YOUR_PROJECT_ID.appspot.com mediante el siguiente comando:
    gcloud app browse
Esta vez, la página que muestra el mensaje "Hello World" la entrega un servidor web que se ejecuta en una instancia de App Engine.

Enhorabuena. Has desplegado tu primera aplicación de Python en el entorno flexible de App Engine.

Consulta las siguientes secciones para obtener información sobre la limpieza y los enlaces a los próximos pasos que puedes dar.

Limpieza

Puedes eliminar tu proyecto de GCP para evitar que se te cobren los recursos utilizados en él.

  1. En la GCP Console, dirígete a la página Proyectos.

    Ir a la página Proyectos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar.
  3. En el cuadro de diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Siguientes pasos

Ahora que has logrado desplegar Hello World, puedes comenzar a explorar tu próxima aplicación de muestra: Bookshelf. Bookshelf es una aplicación web de Python más completa pero básica que utiliza múltiples funciones de Cloud Platform, como el almacenamiento de datos, autenticación, almacenamiento de registros, Pub/Sub y mucho más.

Iniciar el tutorial de la aplicación Bookshelf

Para obtener más información sobre el entorno flexible de App Engine, consulta la visión general de App Engine.

Revisión del código de Hello World

Hello World es la aplicación de App Engine más simple, ya que contiene un único servicio, tiene solo una versión y todo el código se encuentra dentro del directorio raíz de la aplicación. Esta sección describe cada uno de los archivos de la aplicación en detalle.

main.py

Hello World es una aplicación Flask muy básica de un solo archivo.

import logging

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    return 'Hello World!'

@app.errorhandler(500)
def server_error(e):
    logging.exception('An error occurred during a request.')
    return """
    An internal error occurred: <pre>{}</pre>
    See logs for full stacktrace.
    """.format(e), 500

if __name__ == '__main__':
    # This is used when running locally. Gunicorn is used to run the
    # application on Google App Engine. See entrypoint in app.yaml.
    app.run(host='127.0.0.1', port=8080, debug=True)

app.yaml

El archivo app.yaml describe la configuración del despliegue de una aplicación:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

Aquí, app.yaml especifica el tiempo de ejecución utilizado por la aplicación y establece env: flex, especificando que la aplicación usa el entorno flexible.

El entrypoint le dice a App Engine cómo iniciar la aplicación. Esta aplicación utiliza gunicorn para publicar la aplicación Python. La variable $PORT la establece App Engine cuando inicia la aplicación. Para obtener más información sobre entrypoint, consulta la referencia relativa a la inicialización de la aplicación.

Además, la sección opcional runtime_config establece python_version para usar Python 3. Si no se especifica python_version, Python 2 se usa de forma predeterminada. También puedes especificar python_version: 2 explícitamente.

requirements.txt

requirements.txt y el administrador de paquetes Python pip se utilizan para declarar e instalar dependencias de aplicaciones. Hello World requiere Flask, un framework web, y Gunicorn, un servidor WSGI.

Flask==0.12.2
gunicorn==19.7.1

requirements.txt define las bibliotecas que se instalarán localmente y al desplegarse en App Engine.

¿Te ha resultado útil esta página? Enviar comentarios: