Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Informa errores

En este instructivo, se muestra cómo informar y hacer un seguimiento de excepciones no detectadas en la aplicación Bookshelf de Python mediante Google Cloud Console.

Error Reporting proporciona un panel centralizado que muestra los recuentos de cada error único, seguimientos de pila y un historial de casos. También puedes configurar una alerta cuando se producen 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 Cloud Console.
    • Configura el valor de [DATA_BACKEND] con el mismo valor que usaste durante el instructivo Usa datos estructurados.
    • Si usas Cloud SQL o MongoDB, configura los valores en la sección Cloud SQL o Mongo con los mismos valores que usaste en el paso Usa 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. Configura el valor de cloudsql-instance como 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 los siguientes elementos:

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:

  1. En Cloud Console, ve a la página Versiones de App Engine.

    Ir a la página Versiones

  2. Selecciona la casilla de verificación de la versión no predeterminada de la app que deseas borrar.
  3. Haz clic en Borrar para borrar la versión de la app.

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 busca la excepción en la página Error Reporting de Cloud Console.

  1. En bookshelf/crud.py, agrega una operación que acceda a una variable no definida. Luego, genera 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 de índice.

    gcloud app browse

    Puedes ver el mensaje An internal error occurred.

  4. En Cloud Console, ve a la página Error Reporting de Stackdriver.

    Ir a Python

    Puedes ver 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.

Realice una limpieza

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:

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.