Fehler melden

In dieser Anleitung wird beschrieben, wie Sie nicht abgefangene Ausnahmen in der Anleitung Erste Schritte mit Python mithilfe der Google Cloud -Konsole melden und verfolgen.

Error Reporting bietet ein zentrales Dashboard, das die Anzahl der einzelnen Fehler, Stacktraces und einen Verlauf der Vorkommen anzeigt. Sie können auch eine Benachrichtigung einrichten, wenn Fehler auftreten.

Diese Seite ist Teil einer mehrseitigen Anleitung. Wechseln Sie zur Python Bookshelf App, um die Dokumentation von Anfang an durchzugehen und eine Anleitung zur Einrichtung zu erhalten.

Einstellungen konfigurieren

In diesem Abschnitt wird Code im Verzeichnis 5-logging verwendet. Bearbeiten Sie die Dateien und führen Sie Befehle in diesem Verzeichnis aus.

  1. Öffnen Sie die Datei config.py zum Bearbeiten und ersetzen Sie die folgenden Werte:
    • Legen Sie den Wert von [PROJECT_ID] auf Ihre Projekt-ID fest, die in der Google Cloud Console angezeigt wird.
    • Legen Sie für [DATA_BACKEND] den Wert fest, den Sie in der Anleitung Strukturierte Daten verwenden verwendet haben.
    • Wenn Sie Cloud SQL oder MongoDB verwenden, legen Sie im Abschnitt Cloud SQL bzw. Mongo dieselben Werte fest, die Sie auch im Schritt Strukturierte Daten verwenden angegeben haben.
    • Legen Sie den Wert von [CLOUD_STORAGE_BUCKET] auf den Namen Ihres Cloud Storage-Buckets fest.
    • Legen Sie im Abschnitt OAuth2 configuration die Werte von [GOOGLE_OAUTH2_CLIENT_ID] und [GOOGLE_OAUTH2_CLIENT_SECRET] auf die Client-ID und das Secret der Anwendung fest, die Sie zuvor erstellt haben.

  2. Speichern und schließen Sie die config.py-Datei.

Wenn Sie Cloud SQL verwenden:

  1. Öffnen Sie die Datei app.yaml zur Bearbeitung.
  2. Setzen Sie den Wert von cloudsql-instance auf denselben Wert, der für [CLOUDSQL_CONNECTION_NAME] in der Datei config.py verwendet wird. Verwenden Sie das Format project:region:cloudsql-instance. Entfernen Sie die Kommentarzeichen für diese gesamte Zeile.
  3. Speichern und schließen Sie die app.yaml-Datei.

Abhängigkeiten installieren

Verwenden Sie die folgenden Befehle, um eine virtuelle Umgebung zu erstellen und Abhängigkeiten zu installieren:

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

App auf lokalem Computer ausführen

  1. Starten Sie einen lokalen Webserver:

    python main.py
    
  2. Geben Sie im Browser die folgende Adresse ein:

    http://localhost:8080
    

Drücken Sie Strg+C, um den Worker und dann den lokalen Webserver zu beenden.

App in der flexiblen App Engine-Umgebung bereitstellen

  1. Stellen Sie die Beispiel-App bereit:

    gcloud app deploy
    
  2. Geben Sie im Webbrowser die folgende URL ein:

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

    Ersetzen Sie Folgendes:

Wenn Sie die Anwendung aktualisieren, stellen Sie die aktualisierte Version bereit. Dazu geben Sie den gleichen Befehl ein, den Sie bei der ersten Bereitstellung der Anwendung verwendet haben. Bei der neuen Bereitstellung wird eine neue Version der Anwendung erstellt und zur Standardversion hochgestuft. Die älteren Versionen der Anwendung und die zugehörigen VM-Instanzen werden beibehalten. Alle diese Anwendungsversionen und VM-Instanzen sind kostenpflichtige Ressourcen. Löschen Sie zur Senkung der Kosten die nicht standardmäßigen Versionen Ihrer Anwendung.

So löschen Sie eine Anwendungsversion:

  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. Klicken Sie zum Löschen der Anwendungsversion auf Löschen.

Weitere Informationen zum Bereinigen abrechenbarer Ressourcen finden Sie im letzten Schritt dieser Anleitung im Abschnitt Bereinigen.

Fehler simulieren

Fügen Sie absichtlich einen Fehler in Ihren Code ein und suchen Sie auf der Seite „Error Reporting“ der Google Cloud -Konsole nach der Ausnahme, um Error Reporting in Aktion zu sehen.

  1. Fügen Sie in bookshelf/crud.py einen Vorgang hinzu, der auf eine nicht definierte Variable zugreift und in der Indexansicht ein ReferenceError generiert.

    @crud.route("/")
    def list():
       x[3]
  2. Anwendung bereitstellen.

    gcloud app deploy
  3. Rufen Sie die Indexseite auf.

    gcloud app browse

    Sie können die Nachricht An internal error occurred anzeigen.

  4. Rufen Sie in der Google Cloud Console die Seite Error Reporting auf:

    Error Reporting aufrufen

    Sie können diese Seite auch über die Suchleiste finden.

    Der Fehler wird aufgelistet.

    Fehler anzeigen

  5. Klicken Sie auf den Fehler, um Informationen über den Fehler aufzurufen, z. B. wann der Fehler zuletzt aufgetreten ist, wie oft der Fehler aufgetreten ist, ein Histogramm der Vorkommen und den Stacktrace.

Code verstehen

Zur Meldung nichterfasster Ausnahmen verwendet der Code zuerst den Flask-Decorator errorhandler und meldet die Ausnahme dann mithilfe der Cloud-Clientbibliotheken für Python an Error Reporting.

@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

Der Client fügt automatisch die Traceback-Informationen hinzu und verwendet eine Hilfsfunktion, zum Extrahieren der relevanten Anfragedetails aus der Flask-Anfrage, die Error Reporting mit den relevanten Stacktraces und HTTP-Kontexten für alle nicht erfassten InternalServerError HTTP 500-Ausnahmen in Ihrer Anwendung auffüllt.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.

So löschen Sie das Projekt:

  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.