En este instructivo, se muestra cómo informar y hacer un seguimiento de las excepciones no detectadas en la app de Python Bookshelf con Google Cloud Console.
Error Reporting proporciona un panel centralizado que muestra los recuentos de cada error único, seguimiento de pila y un historial de casos. También puedes configurar una alerta que se active cuando se produzcan errores.
Esta página forma parte de un instructivo de varias páginas. Para comenzar desde el principio y ver las instrucciones de configuración, ve a la app de Bookshelf en Python.
Configuración
Esta sección usa código en el directorio 5-logging
. Edita los archivos y ejecuta comandos en este directorio.
-
Abre el archivo
config.py
para editarlo y reemplaza los siguientes valores: -
Configura
[PROJECT_ID]
con el ID del proyecto, que se puede ver en Cloud Console. -
Establece el valor de
[DATA_BACKEND]
en el mismo valor que usaste en el instructivo Usa datos estructurados. -
Si estás usando Cloud SQL o MongoDB, configura los valores en la sección
Cloud SQL
oMongo
con los mismos valores que usaste en el paso Usar datos estructurados. -
Configura el valor de
[CLOUD_STORAGE_BUCKET]
como el nombre de tu bucket de Cloud Storage. -
En la sección
OAuth2 configuration
, configura los valores de[GOOGLE_OAUTH2_CLIENT_ID]
y[GOOGLE_OAUTH2_CLIENT_SECRET]
en el ID de cliente y el secreto de aplicación que creaste anteriormente. -
Guarda el archivo
config.py
y ciérralo.
Si estás usando Cloud SQL:
-
Abre el archivo
app.yaml
para editarlo. -
Establece el valor de
cloudsql-instance
en el mismo valor que se usa para[CLOUDSQL_CONNECTION_NAME]
en el archivoconfig.py
. Usa el formatoproject:region:cloudsql-instance
. Quita todos los comentarios de esta línea. -
Guarda el archivo
app.yaml
y ciérralo.
Instala dependencias
Para crear un entorno virtual y poder instalar dependencias, usa los siguientes comandos:
Linux/macOS
virtualenv -p python3 env
source env/bin/activate
pip install -r requirements.txt
Windows
virtualenv -p python3 env
env\scripts\activate
pip install -r requirements.txt
Ejecuta la app en tu máquina local
Inicia un servidor web local:
python main.py
En el navegador, ingresa la siguiente dirección:
http://localhost:8080
Presiona Control+C para salir del trabajador y luego del servidor web local.
Implementar la app en el entorno flexible de App Engine
Implementa la app de muestra:
gcloud app deploy
En el navegador, ingresa la siguiente URL:
https://PROJECT_ID.REGION_ID.r.appspot.com
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de Google CloudREGION_ID
: un código que App Engine asigna a la app
Si actualizas la app, implementarás la versión actualizada mediante el mismo comando que usaste para implementarla. La implementación crea una versión nueva de tu app y la promueve a la versión predeterminada. Las versiones anteriores de tu app se conservan, al igual que sus instancias de máquina virtual (VM) asociadas. Todas estas instancias de VM y versiones de la app son recursos facturables. Para reducir costos, borra las versiones no predeterminadas de tu app.
Para borrar la versión de una app:
- En la consola de Google Cloud, ve a la página Versiones de App Engine.
- Selecciona la casilla de verificación de la versión no predeterminada de la app que deseas borrar.
- Para borrar la versión de la app, haz clic en Borrar.
Para obtener más información sobre la limpieza de recursos facturables, consulta la sección Limpia en el paso final de este instructivo.
Simular un error
Para ver Error Reporting en acción, ingresa intencionalmente un error en tu código y, luego, busca la excepción en la página de Error Reporting de Cloud Console.
En
bookshelf/crud.py
, agrega una operación que acceda a una variable no definida y genere unReferenceError
en la vista de índice.@crud.route("/") def list(): x[3]
Implementa la app.
gcloud app deploy
Accede a la página de índice.
gcloud app browse
Puedes ver el mensaje
An internal error occurred
.En Cloud Console, ve a la página de Error Reporting de Stackdriver.
Verás el error en la lista.
Haz clic en el error para ver información sobre el error, como cuándo se vio por última vez, la cantidad de veces que sucedió el error, un histograma con las horas de ocurrencia y el seguimiento de pila.
Comprende el código
Para informar excepciones no detectadas, el código primero usa el decorador errorhandler
de Flask y, luego, informa la excepción a Error Reporting mediante las bibliotecas cliente de Cloud para Python.
El cliente agrega automáticamente la información de seguimiento y usa una función auxiliar para extraer los detalles relevantes de la solicitud de Flask, que propaga Error Reporting con los seguimientos de pila relevantes y los contextos HTTP para alguna excepción InternalServerError
HTTP 500
no detectada en tu app.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, haz lo siguiente:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.