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

Esta guía de inicio rápido muestra cómo crear una aplicación pequeña de App Engine que muestre un mensaje breve.

Antes de comenzar

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

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

    Cuando se te pregunte, selecciona la región donde quieres que se ubique la aplicación de App Engine y habilita la facturación.

  2. Instala los siguientes requisitos previos de manera local:
    1. Descarga y también instala git.
    2. Prepara el entorno para el desarrollo en Python.
    3. Descarga y también instala el SDK de Google Cloud. Luego, inicializa la herramienta gcloud:
      Descarga el SDK
  3. Opcional: Puedes usar Google Cloud Shell, que incluye git y el SDK de Cloud instalados, junto con muchas otras características, como la compatibilidad de lenguajes y los editores de código.

    Después de iniciar Google Cloud Shell, puedes continuar con el resto de este instructivo y ejecutar los comandos dentro de Cloud Shell.

Ubicaciones de App Engine

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

El cumplimiento de tus requisitos de latencia, disponibilidad o durabilidad debe ser un factor primario para seleccionar la región donde se ejecutan las apps. Por lo general, puedes seleccionar la región más cercana a los usuarios de la app, pero debes considerar la ubicación de otros productos y servicios de GCP que tu app usa. El uso de servidores en varias ubicaciones puede afectar la latencia de la app y 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)

* En el caso de los clientes que usan la región de São Paulo, se siguen aplicando todos los ANS de productos regionales. Sin embargo, la función con varias regiones y entre regiones que se extiende por América del Norte y América del Sur podría tener ver reducidos el rendimiento y la disponibilidad de manera temporal.

No puedes cambiar la región de una app una vez configurada.

Si ya creaste una aplicación de App Engine deseas ver la región, ejecuta el comando gcloud app describe o abre el Panel de control de App Engine en GCP Console. La región de tu aplicación de App Engine se muestra en http://[YOUR_PROJECT_ID].appspot.com.

Esta guía de inicio rápido muestra una aplicación de Python simple que se escribió con el marco de trabajo Flask y puede implementarse en App Engine. Si bien esta muestra usa Flask, puede usar cualquier marco de trabajo que cumpla con los requisitos anteriores. Entre los marcos de trabajo alternativos, se incluyen Django, Pyramid, Bottle, web.py, Tornado y más. Para ver una explicación de la muestra que usa Django, consulta Cómo ejecutar Django en el entorno flexible de App Engine.

Cómo descargar la app de Hello World

Creamos una app de Hello World simple para Python, de manera que rápidamente puedas familiarizarte con la implementación de una app en el entorno flexible de App Engine. Sigue estos pasos desde una línea de comandos para descargar Hello World a la máquina local.

Descarga la app de muestra y navega al directorio de la app:

  1. Clona el repositorio de la app de muestra Hello World a la máquina local:

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

    De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.

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

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

Cómo ejecutar Hello World en la máquina local

Mac OS / Linux

Para ejecutar la app de Hello World en la computadora local, haz lo siguiente:

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

    sudo pip install virtualenv
    
  2. Crea un entorno aislado de Python y también instala las dependencias:

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

    python main.py
    
  4. En el navegador web, ingresa la siguiente dirección:

    http://localhost:8080
    

Windows

Si instalaste el SDK de Google Cloud, deberías tener instalado Python 2.7, por lo general, en C:\python27_x64\ (para sistemas de 64 bits). Invocaremos la instalación de paquetes de Python con Powershell.

  1. Si aún no lo has hecho, instala Powershell 3.0 o una versión más reciente.

  2. Haz clic derecho en el acceso directo a Powershell y, luego, inícialo como administrador.

  3. Intenta ejecutar el comando python. Si no se encuentra, agrega Python a la PATH del entorno.

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

    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 el entorno aislado de Python. Para esto, asigna permisos para ejecutar las secuencias de comandos firmadas que descargaste y, luego, instala los requisitos de Hello World.

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

    python main.py
    

Puedes ver que en la página aparece el mensaje Hello World de la app de muestra.

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

Cómo implementar y ejecutar Hello World en App Engine

Para implementar la app en el entorno flexible de App Engine, haz lo siguiente:

  1. Para implementar la app de Hello World, ejecuta el siguiente comando desde el directorio hello_world:
    gcloud app deploy
    Obtén más información sobre las marcas opcionales.

    Marcas comunes del comando gcloud

    • Incluye la marca --version para especificar un ID que identifique esa versión de la app de forma única. De lo contrario, se generará uno para que lo uses. Ejemplo: --version [YOUR_VERSION_ID]
    • Incluye la marca --project para especificar un ID de proyecto de GCP alternativo al que inicializaste como predeterminado 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 la implementación de la app desde la línea de comandos, consulta Cómo probar y también implementar la app. Para ver una lista de todas las marcas del comando, consulta la referencia de gcloud app deploy.

  2. Inicia el navegador y ejecuta el siguiente comando para ver la app en http://YOUR_PROJECT_ID.appspot.com:
    gcloud app browse
Esta vez, la página que muestra el mensaje Hello World se envía mediante un servidor web que se ejecuta en una instancia de App Engine.

Felicitaciones. Implementaste la primera app de Python en el entorno flexible de App Engine.

Consulta las siguientes secciones para obtener información sobre la limpieza y vínculos a los pasos siguientes que podrías realizar.

Limpiar

Para evitar que se apliquen cargos a la cuenta, puedes borrar el proyecto de GCP y detener la facturación de todos los recursos que usa.

  1. In the GCP Console, go to the Projects page.

    Go to the Projects page

  2. In the project list, select the project you want to delete and click Delete .
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

¿Qué sigue?

Ahora que completaste Hello World, puedes comenzar a explorar la próxima app de muestra: la app de Bookshelf. La app de Bookshelf es una app web de Python más completa, pese a ser básica, que usa varias características de Cloud Platform, como el almacenamiento de datos, la autenticación, los registros, Pub/Sub, entre otros.

Comienza el instructivo de la app de Bookshelf

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

Revisión del código de Hello World

Hello World es la app de App Engine más simple que puede existir, ya que solo contiene un servicio, solo tiene una versión y todo el código se ubica dentro del directorio raíz de la app. Esta sección describe cada archivo de la app en detalle.

main.py

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

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 de implementación 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 que usa la app y configura env: flex para especificar que la app usa el entorno flexible.

entrypoint le indica a App Engine cómo iniciar la app. Esta app usa gunicorn para publicar la aplicación de Python. App Engine configura la variable $PORT cuando inicia la app. Para obtener más información sobre entrypoint, consulta Inicio de la aplicación.

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

requirements.txt

requirements.txt y el administrador de paquetes de Python pip se usan para declarar y también instalar las dependencias de la aplicación. Hello World necesita Flask, un marco de trabajo web, y Gunicorn, un servidor de WSGI.

Flask==0.12.2
gunicorn==19.7.1

requirements.txt define las bibliotecas que se instalarán de manera local y en la implementación en App Engine.

¿Te sirvió esta página? Envíanos tu opinión: