Ich möchte einen Dekorator verwenden, um das Auditing verschiedener Funktionen (hauptsächlich Django-View-Funktionen, aber nicht ausschließlich) zu überwachen. Um dies zu tun, möchte ich in der Lage sein, die Funktion nach der Ausführung zu auditieren - d. H. Die Funktion läuft wie normal, und wenn sie ohne eine Ausnahme zurückkehrt, dann protokolliert der Dekorator die Tatsache.Wie kann ich einen Python-Dekorator ausführen, nachdem die dekorierte Funktion abgeschlossen wurde?
Etwas wie:
@audit_action(action='did something')
def do_something(*args, **kwargs):
if args[0] == 'foo':
return 'bar'
else:
return 'baz'
Wo audit_action
würde nur ausgeführt, nachdem die Funktion beendet ist.
Sie keine Ahnung, wie viele verschiedene Kombinationen von Decorator, Wrapper, Func und Retvals habe ich aufgebraucht, um das zum Laufen zu bringen. Danke nicht nur für den Code, sondern für die Erklärung. –