Zum Hauptinhalt springen
AppSignal versucht, so viele Python-Ausnahmen wie möglich zu erfassen. AppSignal kann Ausnahmen in Ihrer gesamten Anwendung mit unseren Instrumentierungen erfassen, die unsere Unterstützung auf viele beliebte Frameworks und Hintergrundjob-Pakete erweitern. Es kann jedoch Szenarien geben, in denen Ausnahmen ausgelöst werden, die nicht mit potenziellen Problemen in Ihrer Python-Anwendung zusammenhängen, beispielsweise Bots, die versuchen, automatisch Formulare zu posten, oder veraltete Links, die Besucher zu Inhalten leiten, die nicht mehr existieren. Um zu vermeiden, dass diese Fehler als Probleme in AppSignal gemeldet werden, können Sie Ausnahmebehandlung zu Ihrem Code hinzufügen oder AppSignal bestimmte Fehler vollständig ignorieren lassen.

Fehler ignorieren

Die AppSignal-Konfiguration ermöglicht es, Fehler zu ignorieren. Durch Angabe einer Liste bestimmter Fehler sendet AppSignal keine Benachrichtigungen, wenn diese Fehler ausgelöst werden.

Ausnahmebehandlung

Das bloße Ignorieren eines Fehlers schaltet Benachrichtigungen stumm, könnte aber potenziell ein größeres Problem verbergen. Aus diesem Grund empfehlen wir, Ausnahmebehandlung mit try ... except-Anweisungen in Ihre Anwendung einzubauen. Mit try ... except können Sie bestimmte Ausnahmen abfangen und einen alternativen Code-Pfad hinzufügen, wenn eine Ausnahme auftritt, z. B. das Rendern von 404-Seiten oder das Anzeigen detaillierterer Fehlermeldungen für den Benutzer darüber, was schiefgelaufen ist. In einer Django-View-Datei können wir zum Beispiel Folgendes tun:
def show(request):
   try:
        user = Post.find(1)
    except RecordNotFound:
        return render(request, "not_found.html")
Es gibt einige Szenarien, etwa wenn Ressourcen nicht existieren oder eine Formularübermittlung fehlschlägt, die auf diese Weise behandelt werden sollten, um dem Endbenutzer korrekte HTTP-Antworten zu liefern. Wenn Sie diese abgefangenen Fehler an AppSignal melden möchten, verwenden Sie die Helper set_error oder send_error.

set_error

Melden Sie Fehler, ohne dass Ihre Anwendung dabei abstürzt. Mit dem Helper set_error wird der angegebene Fehler an den AppSignal-Trace gehängt, wodurch der Fehler für den Trace (Request / Hintergrundjob) an AppSignal gemeldet wird. Wenn Sie den Fehler weiterhin verfolgen möchten, während Sie ihn abfangen, können Sie den Helper set_error verwenden, um die Ausnahme dem aktuellen AppSignal-Trace hinzuzufügen. Der Fehler wird in AppSignal aufgezeichnet, Ihr Prozess stürzt jedoch nicht ab. In einer Django-View-Datei können wir zum Beispiel Folgendes tun:
from appsignal import set_error

# In a Django view file
def show(request):
    try:
        user = Post.find(1)
    except Post.DoesNotExist as error:
        set_error(error)
        return render(request, "not_found.html")
Die Ausnahme wird von AppSignal wie jeder andere Fehler verfolgt, und es ermöglicht Ihnen, benutzerdefinierte Fehlerbehandlung und Fallbacks bereitzustellen.
Hinweis: Diese Methode funktioniert nur, wenn bereits ein AppSignal-Trace aktiv ist. Andernfalls wird der Fehler ignoriert. Dies ist in den meisten automatisch unterstützten Instrumentierungen oder bei der Verwendung benutzerdefinierter Instrumentierung der Fall. Siehe send_error zum Senden von Fehlern ohne aktiven AppSignal-Trace.

send_error

AppSignal bietet einen Mechanismus, um Fehler an AppSignal zu senden, ohne einen Trace starten zu müssen. Dies ist nützlich, um Fehler zu verfolgen, die in Code auftreten, der sich nicht im Kontext eines Webrequests oder Hintergrundjobs befindet, z. B. einmalige Skripte oder Cronjobs. Dies ist nützlich für Anwendungen, die unsere Instrumentierungen für den Teil der App, in dem der Fehler ausgelöst wird, nicht verwenden. Sie können die Methode send_error verwenden, um eine Ausnahme direkt aus einer beliebigen Stelle in Ihrem Code an AppSignal zu senden, ohne zuvor einen Trace zu starten.
from appsignal import send_error

# In a script
def perform():
    try:
        user = Post.find(1)
    except Post.DoesNotExist as error:
        send_error(error)
        print("No post found!")

Zusätzliche Metadaten

Um Metadaten zu dem gesendeten Fehler hinzuzufügen, verwenden Sie die Methode send_error_with_context. Tags und andere Arten der Datenanpassung können auf diese Weise zum Fehler hinzugefügt werden.
from appsignal import send_error_with_context, set_params

# In a script
def perform():
    try:
        user = Post.find(1)
    except Post.DoesNotExist as error:
        # Using implicit current span
        with send_error_with_context(error):
            set_params({"abc": "def"})

        # Using explicit `with` block span
        with send_error_with_context(error) as current_span:
            set_params({"abc": "def"}, current_span)

        print("No post found!")