Wir haben ein paar Django Post-Speichern-Signale auf dem Benutzerobjekt, die externe Abhängigkeiten aufrufen (CRMs, Mail-Provider, etc). Diese Anrufe sind nice-to-haves und sollten den Benutzer nicht blockieren oder Fehler verursachen, wenn sie auftreten.Django-Signalfehler allgemein unterdrücken?
Die Bibliotheken haben verschiedene Fehlerzustände (keine Verbindung zu externem Dienst, schlechter Schlüssel usw.), und es war ein Schmerz zu modellieren, also habe ich einen Ausnahme-unterdrückenden Dekorator gemacht, den ich auf die Signale anwenden kann also blockieren sie nie.
def exception_suppressor()
def suppressor(*args, **kwargs):
try:
return fn(*args, **kwargs)
except Exception as e:
LOGGER.info("Suppressing exception: " + str(e))
return suppressor
- Ist das weit getan? Gibt es bessere Möglichkeiten, es zu tun?
- Gibt es irgendwelche Builtins, die das zur Verfügung stellen können? Ich sah ein with-context-block-Konstrukt, das dies zuließ, aber keinen Decorator.