Ich benutze Flask Restful, um eine API zu erstellen. Ich habe eine Reihe von Modellklassen mit Methoden, die benutzerdefinierte Ausnahmen auslösen können (Beispiel: AuthFailed-Ausnahme für meine Benutzermodellklasse). Ich benutze die benutzerdefinierte Fehlerbehandlung, dokumentierte here, um dies zu behandeln (so dass wenn Authentifizierung fehlschlägt, eine entsprechende Antwort gesendet wird). So weit, ist es gut. Allerdings merke ich, dass, wenn die Ausnahme ausgelöst wird, obwohl die richtige Antwort JSON und Status zurückgesendet wird, ich immer noch eine Traceback bekomme, die nicht ideal ist. Wenn ich einen Fehler (außerhalb von flask) mit einem try-except-Block behandle, kann der except normalerweise den Fehler auffangen und behandeln (wodurch die Rückverfolgung verhindert wird). Was ist der richtige Ansatz hier? Missverstehe ich, wie die Fehlerfunktion verwendet wird?Flask restful - Exception handling traceback?
Antwort
Leider für Sie ist es auf diese Weise "by Design" der Flask-RESTful APIs errors
Funktionalität behandelt. Die ausgelösten Ausnahmen werden protokolliert, und die entsprechende Antwort, die in errors
dict definiert ist, wird zurückgegeben.
Sie können jedoch das Niveau der Protokollausgabe ändern, indem Sie die Protokollebene von Flask des Loggers wie folgt ändern:
app = Flask(__name__)
app.logger.setLevel(logging.CRITICAL)
Ich glaube, Sie würden es tatsächlich zu CRITICAL
gesetzt haben, weil diese Fehler weiterhin protokolliert immer sogar auf Log-Level soweit ich weiß.
Darüber hinaus sind Flask und Flask-RESTful Open-Source. Nachdem ich mir den Code angesehen habe, habe ich the function of a Flask app that is responsible for adding the exception traceback to the log (Flask Version 0.11.1) gefunden. Natürlich könnten Sie auch Ihre eigene App
Klasse erstellen (die die ursprüngliche Klasse von Flask erweitert), die diese Methode (oder einen Aufrufer davon) überschreibt und stattdessen etwas anderes tut. Sie sollten jedoch vorsichtig sein, wenn Sie Ihre Flask-Version aktualisieren, wenn Sie nicht dokumentierte Sachen wie diese verwenden.
- 1. Exception Handling
- 2. Java SpringBoot Exception Handling
- 3. Angular Exception Handling
- 4. MVVM Exception Handling
- 5. handling exception in Tpl
- 6. Jinja2 Exception Handling
- 7. Spring Boot Exception Handling
- 8. Java Exception Handling Concept
- 9. Exception Handling in Boost.Asio
- 10. Override Meteor Exception Handling
- 11. Flask-restful - Benutzerdefinierte Fehlerbehandlung
- 12. . NET-Exception-Handling-Anwendung Konfigurationsdatei
- 13. Exception Handling in Schöne Seife/Python
- 14. Python Flask RESTful API
- 15. Flask-RESTful - Bild hochladen
- 16. Traceback beim Laufen einfach Flask Anwendung
- 17. Flask MethodView vs Flask-Restful Ressource
- 18. Problem mit Exception Handling in Python
- 19. JVM Exception Handling Ablauf der Steuerung
- 20. Rails Exception Handling mit Aspect Oriented Programmierung
- 21. Uncaught Fehler/Exception Handling in Swift
- 22. Exception Handling - set_unexpected() nicht in der Lage
- 23. Java Exception Handling für den folgenden Anwendungsfall
- 24. Azure Flask-Restful Deploy Failure
- 25. Flask-RESTful - Rückgabe benutzerdefiniertes Antwortformat
- 26. 404, wenn Ressource Flask-Restful
- 27. Verwenden von Flask-RESTful in PyCharm
- 28. Python nur letzte Traceback drucken?
- 29. Warum der Traceback-Fehler mit einer try/exception rekursive (?) Funktion?
- 30. Flask: Ein RESTful API und SocketIO Server
Hmm ok. Es ist seltsam, dass es keine Möglichkeit gibt, Fehler zu vermeiden, die protokolliert werden (unabhängig vom Fehlerlevel), wenn sie angemessen behandelt werden! Aber gut. – guywhoneedsahand
Leider habe ich bei der Arbeit mit Flask (-RESTful) noch nichts gesehen. Ich habe mir aber nochmal den Quellcode von Flask (-RESTful) angeschaut und etwas gefunden, das dir auch helfen könnte, das zu erreichen, was du willst (und meine Antwort auf ein akzeptables Level zu erhöhen: P). – mxscho