En este instructivo, se muestra cómo informar y hacer un seguimiento de excepciones no detectadas en el instructivo Primeros pasos con Python con la consola deGoogle Cloud .
Error Reporting proporciona un panel centralizado que muestra los recuentos de cada error único, los seguimientos de pila y un historial de ocurrencias. También puedes configurar una alerta para 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
En esta sección, se usa código en el directorio 5-logging. Edita los archivos y ejecuta comandos en este directorio.
-
Abre el archivo
config.pypara editarlo y reemplaza los siguientes valores: -
Configura el valor de
[PROJECT_ID]en el ID de tu proyecto, que se puede ver en la consola de Google Cloud . -
Configura el valor de
[DATA_BACKEND]con el mismo valor que usaste en el instructivo Usar datos estructurados. -
Si estás usando Cloud SQL o MongoDB, configura los valores en la sección
Cloud SQLoMongocon los mismos valores que usaste en el paso Usar datos estructurados. - Configura el valor de
[CLOUD_STORAGE_BUCKET]en el nombre de tu depósito de Cloud Storage. -
En la sección
OAuth2 configuration, configura los valores de[GOOGLE_OAUTH2_CLIENT_ID]y[GOOGLE_OAUTH2_CLIENT_SECRET]como el ID de cliente y el secreto de la aplicación que creaste anteriormente. - Guarda el archivo
config.pyy ciérralo.
Si estás usando Cloud SQL:
-
Abre el archivo
app.yamlpara editarlo. -
Establece el valor de
cloudsql-instanceen el mismo valor que se usó 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.yamly 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.pyEn 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 deployEn el navegador, ingresa la siguiente URL:
https://PROJECT_ID.REGION_ID.r.appspot.comReemplaza lo siguiente:
PROJECT_ID: ID de tu 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 aplicación, haz lo siguiente:
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- 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 Limpieza 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 busca la excepción en la página Error Reporting de la Google Cloud consola.
En
bookshelf/crud.py, agrega una operación que acceda a una variable no definida y genere unReferenceErroren la vista de índice.@crud.route("/") def list(): x[3]
Implementa la app.
gcloud app deploy
Accede a la página del índice.
gcloud app browse
Puedes ver el mensaje
An internal error occurred.-
En la consola de Google Cloud , ve a la página Error Reporting:
También puedes usar la barra de búsqueda para encontrar esta página.
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, sigue los pasos que se indican más abajo:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.