In dieser Anleitung wird beschrieben, wie Sie nicht erfasste Ausnahmen in der Python Bookshelf-Anwendung mit der Google Cloud Console melden und erfassen.
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.
-
Öffne die Datei
config.py
zur Bearbeitung und ersetze die folgenden Werte: -
Legen Sie den Wert von
[PROJECT_ID]
auf Ihre Projekt-ID fest, die in der Cloud Console sichtbar ist. -
Lege für
[DATA_BACKEND]
den Wert fest, den du in der Anleitung Strukturierte Daten verwenden verwendet hast. -
Wenn du Cloud SQL oder MongoDB verwendest, musst du für die Werte im Abschnitt
Cloud SQL
oderMongo
die Werte festlegen, die du im Schritt Strukturierte Daten verwenden verwendet hast. -
Legen Sie den Wert von
[CLOUD_STORAGE_BUCKET]
auf den Namen Ihres Cloud Storage-Buckets fest. -
Lege im Abschnitt
OAuth2 configuration
die Werte für[GOOGLE_OAUTH2_CLIENT_ID]
und[GOOGLE_OAUTH2_CLIENT_SECRET]
auf die zuvor erstellte Anwendungs-Client-ID und das Secret fest. -
Speichern und schließen Sie die
config.py
-Datei.
Wenn Sie Cloud SQL verwenden:
-
Öffnen Sie die Datei
app.yaml
zur Bearbeitung. -
Setzen Sie den Wert von
cloudsql-instance
auf denselben Wert, der für[CLOUDSQL_CONNECTION_NAME]
in der Dateiconfig.py
verwendet wird. Verwenden Sie das Formatproject:region:cloudsql-instance
. Entfernen Sie die Kommentarzeichen für diese gesamte Zeile. -
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
Starten Sie einen lokalen Webserver:
python main.py
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
Stellen Sie die Beispiel-App bereit:
gcloud app deploy
Geben Sie im Webbrowser die folgende URL ein:
https://PROJECT_ID.REGION_ID.r.appspot.com
Ersetzen Sie Folgendes:
PROJECT_ID
: Ihre Google Cloud-Projekt-IDREGION_ID
: Ein Code, den App Engine Ihrer Anwendung zuweist
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 App-Version:
- 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.
- 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
Wenn Sie Error Reporting in Aktion sehen möchten, führen Sie absichtlich einen Fehler in den Code ein und suchen Sie dann auf der Seite „Error Reporting“ in der Cloud Console nach der Ausnahme.
Fügen Sie in
bookshelf/crud.py
einen Vorgang hinzu, der auf eine nicht definierte Variable zugreift und in der Indexansicht einReferenceError
generiert.@crud.route("/") def list(): x[3]
Anwendung bereitstellen.
gcloud app deploy
Rufen Sie die Indexseite auf.
gcloud app browse
Sie können die Nachricht
An internal error occurred
anzeigen.Rufen Sie in der Cloud Console die Stackdriver-Seite Error Reporting auf.
Der Fehler wird aufgelistet.
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.
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:
- 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.