Informa errores

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.

  1. Abre el archivo config.py para 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 SQL o Mongo con 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.

  2. Guarda el archivo config.py y ciérralo.

Si estás usando Cloud SQL:

  1. Abre el archivo app.yaml para editarlo.
  2. Establece el valor de cloudsql-instance en el mismo valor que se usó para [CLOUDSQL_CONNECTION_NAME] en el archivo config.py. Usa el formato project:region:cloudsql-instance. Quita todos los comentarios de esta línea.
  3. 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

  1. Inicia un servidor web local:

    python main.py
    
  2. 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

  1. Implementa la app de muestra:

    gcloud app deploy
    
  2. En el navegador, ingresa la siguiente URL:

    https://PROJECT_ID.REGION_ID.r.appspot.com

    Reemplaza lo siguiente:

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:

  1. In the Google Cloud console, go to the Versions page for App Engine.

    Go to Versions

  2. Select the checkbox for the non-default app version that you want to delete.
  3. 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.

  1. En bookshelf/crud.py, agrega una operación que acceda a una variable no definida y genere un ReferenceError en la vista de índice.

    @crud.route("/")
    def list():
       x[3]
  2. Implementa la app.

    gcloud app deploy
  3. Accede a la página del índice.

    gcloud app browse

    Puedes ver el mensaje An internal error occurred.

  4. En la consola de Google Cloud , ve a la página Error Reporting:

    Ir a Error Reporting

    También puedes usar la barra de búsqueda para encontrar esta página.

    Verás el error en la lista.

    Ver errores

  5. 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.

@app.errorhandler(500)
def server_error(e):
    client = error_reporting.Client(app.config['PROJECT_ID'])
    client.report_exception(
        http_context=error_reporting.build_flask_context(request))
    return """
    An internal error occurred.
    """, 500

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:

  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.