Guía Paso a Paso: Python en App Engine
Google App Engine es una plataforma que puede utilizarse para alojar aplicaciones web desarrolladas en Python, incluyendo aplicaciones basadas en Flask y Django. Google App Engine ofrece soporte para múltiples lenguajes de programación, incluidos Python, Node. js, Java, Ruby, C#, Go, o PHP, y es adecuado para una variedad de aplicaciones web.
Tanto Flask como Django son marcos populares de Python para el desarrollo web, y puedes usarlos en App Engine. A continuación, te proporciono una breve descripción de cómo puedes utilizar cada uno:
- Flask: Puedes implementar aplicaciones Flask en Google App Engine de manera bastante sencilla. Flask es un micro marco web que es muy adecuado para aplicaciones pequeñas y medianas. Puedes definir rutas y vistas de manera simple y rápida. Para desplegar una aplicación Flask en App Engine, puedes seguir las instrucciones y ajustar el archivo
app.yaml
según sea necesario. - Django: Si deseas usar Django en Google App Engine, puedes hacerlo, pero ten en cuenta que Django es un marco más completo y estructurado que Flask. Puedes seguir las guías y tutoriales proporcionados por Google para configurar una aplicación Django en App Engine. Asegúrate de que tu configuración sea compatible con la forma en que App Engine maneja las solicitudes y el almacenamiento de datos, ya que App Engine utiliza Google Cloud Datastore para el almacenamiento de datos.
En ambos casos, debes prestar atención a la configuración de la base de datos y al manejo de las solicitudes HTTP, ya que App Engine tiene algunas diferencias con respecto a la ejecución de aplicaciones web tradicionales en servidores. Además, debes considerar las políticas de escalabilidad y los recursos disponibles en App Engine, que pueden ser diferentes de un servidor web tradicional.
Configuración Inicial de Google Cloud Platform
Antes de comenzar, asegúrate de tener una cuenta en Google Cloud Platform (GCP). Si no la tienes, puedes registrarte de forma gratuita y obtener una cantidad generosa de créditos para empezar. Si ya eres usuario de GCP y has agotado tus céditos gratuitos debes habilitar el sistema de facturación. Toma en consideración que cierto uso de App Engine como otros servicios de GCP como uso de APIs, etc. forman parte del nivel gratuito.
El nivel de uso gratuito de Google App Engine se basa en el programa Always Free, que proporciona una cantidad limitada de recursos gratuitos que los desarrolladores pueden utilizar para ejecutar sus aplicaciones en App Engine. Estos recursos incluyen:
- Recursos de cálculo: Cada día, puedes utilizar una cantidad limitada de tiempo de CPU y memoria de forma gratuita. Estos recursos se renuevan diariamente.
- Almacenamiento: Puedes utilizar una cantidad limitada de almacenamiento y ancho de banda de forma gratuita.
- Número de instancias y servicios: Puedes ejecutar una cantidad limitada de instancias y servicios sin costo.
- Tráfico entrante: El tráfico entrante a tu aplicación es gratuito.
Es importante tener en cuenta que el nivel gratuito de Google App Engine tiene limitaciones (28 horas de instancia F1), y si tu aplicación supera estas limitaciones, es posible que se te cobre según el uso adicional. Es recomendable revisar la documentación actualizada de Google Cloud Platform para obtener detalles precisos sobre el nivel gratuito de Google App Engine, los consumos actuales, ya que las políticas pueden cambiar con el tiempo. Como indicamos, la aplicación no tendrá costos si su trafico no excede ese nivel, lo cual puedes verificar en la sección de Facturación de tu proyecto:
Siguientes pasos:
- Accede a la Consola de Google Cloud.
- Crea un nuevo proyecto si aún no tienes uno.
Instalación de Google Cloud SDK
El Google Cloud SDK es una herramienta que te permitirá interactuar con Google Cloud Platform desde la línea de comandos.
- Descarga e instala Google Cloud SDK.
- Inicia sesión en tu cuenta de Google utilizando
gcloud auth login
desde la línea de comandos.
Creación de una Aplicación en Google App Engine
- Crea una aplicación en App Engine ejecutando los siguientes pasos.
Ejecute lo siguiente en la línea de comando para crear su proyecto:
gcloud app create
Navegue hasta el directorio donde ha descargado el código fuente de ejemplo y ejecute lo siguiente en la línea de comando para seleccionar su proyecto: (como ejemplo app-sample-403218)
gcloud config set project app-sample-403218
Alternativamente, puedes crear tu proyecto directamente en Google Cloud Platform en «Nuevo Proyecto». Recuerda que obtendrás un nombre y un ID de proyecto, el segundo es el que vas a utilizar en la consola para identificar tu proyecto.
Luego dirígete a App Engine / Panel y allí verás tu proyecto.
Estructura de archivos
App Engine ejecuta apps de Python 3 en un contenedor protegido por gVisor en una distribución de Ubuntu Linux actualizada.
Asegúrate de que tu proyecto Flask tenga una estructura de archivos que sea compatible con Google App Engine. Por ejemplo, podría tener la siguiente estructura:
my-flask-app/
├── app.yaml
├── main.py
├── requirements.txt
├── static/
├── templates/
└── ...
Una aplicación mínima
Una aplicación Flask mínima se parece a esto:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
Crear el archivo requirements.txt
Durante la implementación, App Engine usa el administrador de paquetes de Python pip
para instalar las dependencias definidas en el archivo de metadatos requirements.txt
ubicado en el directorio raíz de tu proyecto.
El archivo requirements.txt
debe contener una lista de todas las bibliotecas y sus versiones que tu aplicación Flask necesita para funcionar correctamente. Puedes generar este archivo manualmente o utilizar la salida de pip freeze
para crearlo si tienes las bibliotecas instaladas.
A continuación, te doy un ejemplo de cómo podría ser el contenido de un archivo requirements.txt
básico para una aplicación Flask:
Flask==2.1.1
gunicorn==20.1.0
En este ejemplo, Flask
es la biblioteca Flask, y gunicorn
‘Green Unicorn’ es un servidor HTTP Python WSGI para UNIX. El servidor Gunicorn es ampliamente compatible con varios marcos web, se implementa de forma sencilla, consume pocos recursos del servidor y es bastante rápido. Se utiliza comúnmente en Google App Engine. Asegúrate de especificar las versiones de las bibliotecas que sabes que funcionan bien con tu aplicación. También, si tienes otras bibliotecas, agrégalas a esta lista.
Crear el archivo app.yaml
El archivo app.yaml
es necesario para configurar tu aplicación en App Engine. Debes crear este archivo en el directorio raíz de tu proyecto. Aquí tienes un ejemplo básico de un archivo app.yaml
:
runtime: python39 # Puedes seleccionar la versión de Python que necesites.
entrypoint: gunicorn -b :$PORT main:app # main:app debe apuntar a tu aplicación Flask.
handlers:
- url: /static
static_dir: static
- url: /.*
script: auto
El framework web que usa tu app se encarga de enrutar las solicitudes a los controladores adecuados de la app.
Si la app cumple con los siguientes requisitos, App Engine la iniciará con el servidor web gunicorn
si no especificas el campo entrypoint
:
- La raíz del directorio de la app contiene un archivo
main.py
con un objeto compatible con WSGI llamadoapp
. - La app no contiene archivos
Pipfile
oPipfile.lock
.
Si no especificas un punto de entrada para el entorno de ejecución de Python 3, App Engine configura y, luego, inicia el servidor web predeterminado de Gunicorn.
Crear un entorno virtual
Crea un entorno virtual para tu proyecto Flask y activa ese entorno.
python -m venv venv
source venv/bin/activate # En sistemas Unix
venv\Scripts\activate # En Windows
Instalar dependencias
Asegúrate de tener todas las dependencias necesarias para tu proyecto Flask instaladas. Esto incluye Flask y cualquier otra biblioteca que utilices. Puedes listar las dependencias en un archivo requirements.txt
.
pip install -r requirements.txt
Despliegue
Finalmente, puedes desplegar tu aplicación en Google App Engine utilizando el siguiente comando:
gcloud app deploy
Sigue las instrucciones y espera a que se complete el despliegue. En la salida de pantalla verás una línea similar a esta que indica Deployed service [default] to [url_de_tu_aplicación]
Esta es la URL que GCP te brinda para poder ver tu a sitio web funcionando en la web. Has control + click sobre ella, escribe el comando «gcloud app browse» en la consola, o copia la URL y pégala en el explorador para que puedas ver tu sitio web.
Como indicamos, puedes terminar la configuración de tu aplicación en Python siguiendo la sección Apuntando un dominio a tu sitio o aplicación web de nuestro artículo anterior Guía Paso a Paso: ¿Cómo Subir su Sitio Web (HTML) a Google App Engine? Tutorial actualizado MDM.
¡Eso es todo! Tu aplicación Flask debería estar funcionando en Google App Engine después de estos pasos. Asegúrate de que tu código Flask esté en main.py
(o ajusta el entrypoint
en el archivo app.yaml
si tu archivo principal tiene un nombre diferente) y que tu aplicación esté configurada para manejar solicitudes web adecuadamente.