Crea una app de Python en el entorno flexible de App Engine

ID de región

REGION_ID es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.

Obtén más información acerca de los ID de región.

En esta guía de inicio rápido, se muestra cómo crear e implementar una app que muestra un mensaje corto. Puedes usar la aplicación de ejemplo en esta guía de inicio rápido para cualquier versión compatible de Python, especificando la versión del entorno de ejecución y el sistema operativo en tu archivo app.yaml.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Build API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Requisitos previos adicionales

  1. Inicializa tu app de App Engine con el proyecto y selecciona su región:

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    Cuando se te solicite, selecciona la región en la que deseas ubicar tu aplicación de App Engine.

  2. Instala lo siguiente en tu máquina local:

    • Ejecuta el siguiente comando a fin de instalar el componente de gcloud que incluye la extensión de App Engine para Python:

      gcloud components install app-engine-python
      

  3. Prepara tu entorno para el desarrollo en Python. Se recomienda que tengas instaladas en tu sistema la versión más reciente de Python, pip, y otras herramientas relacionadas. Para obtener instrucciones, consulta la Guía de configuración del entorno de desarrollo de Python.

Ubicaciones de App Engine

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

El cumplimiento de tus requisitos de latencia, disponibilidad o durabilidad debe ser un factor principal para seleccionar la región en la que se ejecutan las apps. Por lo general, puedes seleccionar la región más cercana a la de los usuarios de la app, pero debes considerar las ubicaciones en las que App Engine está disponible y las ubicaciones de los otros productos y servicios de Google Cloud que usa la app. Usar servicios en varias ubicaciones puede afectar la latencia de la app y sus precios.

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

Si ya creaste una aplicación de App Engine, puedes ver su región mediante una de las siguientes opciones:

En esta guía de inicio rápido, se muestra la app de Python 3 más reciente escrita con el framework web Flask que se puede implementar en App Engine. Aunque en esta muestra se usa Flask, puedes usar cualquier framework web que cumpla con los requisitos anteriores. Otros frameworks alternativos son Django, Pyramid, Bottle y web.py.

Descarga la app de Hello World

Creamos una app de Hello World simple para App Engine a fin de que puedas familiarizarte con rapidez con la implementación de una app en Google Cloud.

  1. Clona el repositorio de la app Hello World de muestra al equipo local.

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

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

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

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

Ejecuta Hello World en tu máquina local

Para ejecutar la app de Hello World en tu computadora local, sigue estos pasos:

macOS/Linux

  1. Crea un entorno aislado de Python:
    python3 -m venv env
    source env/bin/activate
  2. Si no estás en el directorio que contiene el código de muestra, navega al directorio que contiene el código de muestra hello_world. Luego, instala las dependencias:
    cd YOUR_SAMPLE_CODE_DIR
    pip install -r requirements.txt
  3. Ejecute la aplicación:
    python main.py
  4. En el navegador web, ingresa la siguiente dirección:
    http://localhost:8080

    Si usas Cloud Shell, en la barra de herramientas, haz clic en Vista previa en la Web y selecciona Vista previa en el puerto 8080 en su lugar.

Windows

Usa PowerShell para ejecutar tus paquetes de Python.

  1. Ubica la instalación de PowerShell.
  2. Haz clic derecho en el acceso directo a PowerShell y, luego, inícialo como administrador.
  3. Crea un entorno de Python aislado.
    python -m venv env
    .\env\Scripts\activate
  4. Navegue al directorio del proyecto y luego instale las dependencias. Si no estás en el directorio que contiene el código de muestra, navega al directorio que contiene el código de muestra hello_world. Luego, instala las dependencias:
    cd YOUR_SAMPLE_CODE_DIR
    pip install -r requirements.txt
  5. Ejecute la aplicación:
    python main.py
  6. En el navegador web, ingresa la siguiente dirección:
    http://localhost:8080

En la página, se ve el mensaje Hello World de la app de muestra. En la ventana de terminal, presiona Ctrl + C para salir del servidor web.

Implemente y ejecute Hello World en App Engine

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

  1. Implementa la app de Hello World mediante la ejecución del siguiente comando desde el directorio hello_world:

    gcloud app deploy

    Obtén más información sobre las marcas opcionales.

    Marcas comunes del comando de 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. Por ejemplo: --version [YOUR_VERSION_ID].
    • Incluye la marca --project para especificar un ID del proyecto de Google Cloud alternativo al que inicializaste como predeterminado en la herramienta de gcloud. Por 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 Prueba e implementa la app. Para obtener una lista de todas las marcas de comandos, consulta la referencia de gcloud app deploy.

  2. Inicia tu navegador para ver la app en https://PROJECT_ID.REGION_ID.r.appspot.com.

    gcloud app browse
    donde PROJECT_ID representa el ID del proyecto de Google Cloud.

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 aplicación de App Engine en el entorno flexible de App Engine.

Si encontraste algún error cuando implementaste la aplicación, consulta las sugerencias para solucionar problemas.

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

Realiza una limpieza

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

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

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

¿Qué sigue?

Conoce toda la plataforma

Ahora que sabes cómo implementar y desarrollar apps en App Engine, puedes explorar el resto de Google Cloud. Ya instalaste Google Cloud CLI, que te brinda las herramientas para interactuar con productos como Cloud SQL, Cloud Storage, Firestore y muchos otros.

Aprende sobre el entorno flexible de App Engine

Aquí hay algunos temas para ayudarte a continuar tu aprendizaje sobre App Engine.

Revisión del código de Hello World

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

main.py

La app de Hello World es una app básica de Flask de un solo archivo:

from flask import Flask


app = Flask(__name__)


@app.route("/")
def hello() -> str:
    """Return a friendly HTTP greeting.

    Returns:
        A string with the words 'Hello World!'.
    """
    return "Hello World!"


if __name__ == "__main__":
    # This is used when running locally only. When deploying to Google App
    # Engine, a webserver process such as Gunicorn will serve the app.
    app.run(host="127.0.0.1", port=8080, debug=True)

app.yaml

El archivo app.yaml describe la siguiente configuración para tu app:

  • Configura env: flex, lo que indica que tu app usa el entorno flexible de App Engine.
  • Especifica el entorno de ejecución que usa la app. Si excluyes la configuración runtime_version, App Engine usará la versión más reciente de Python como la versión predeterminada para tu app.

  • entrypoint le indica a App Engine cómo iniciar la app. Esta app usa gunicorn para entregar la app de Python como una alternativa al servidor de desarrollo de Flask (que se usa cuando se ejecuta de forma local). App Engine configura la variable $PORT cuando inicia la app. Para obtener más información sobre entrypoint, consulta Inicio de la aplicación.

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

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

runtime_config:
  operating_system: ubuntu22

# 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

requirements.txt

requirements.txt y el administrador de paquetes de Python pip declaran e instalan dependencias de aplicaciones. Hello World necesita Flask, un framework web, y Gunicorn, un servidor de WSGI.

Flask==3.0.3; python_version > '3.6'
Flask==2.3.3; python_version < '3.7'
Werkzeug==3.0.3; python_version > '3.6'
Werkzeug==2.3.7; python_version < '3.7'
gunicorn==22.0.0

requirements.txt define las bibliotecas que se instalarán de forma local y cuando se implemente en App Engine.