2016-10-17 200 views
3

我正在使用Flask Restful來構建一個API。我有許多模型類可能會引發自定義異常(例如:我的用戶模型類中的AuthFailed異常)。我正在使用自定義錯誤處理(記錄here)來處理此問題(以便在auth失敗時發送適當的響應)。到現在爲止還挺好。但是,我注意到,儘管正確的響應JSON和狀態被髮送回來,但當我們發生異常時,仍然有一個不理想的回溯。通常,如果我使用try-except塊處理錯誤(在燒瓶外),except可以捕獲錯誤並處理它(防止追溯)。那麼這裏的正確方法是什麼?我誤解了如何使用錯誤功能?Flask restful - 異常處理回溯?

回答

1

不幸的是,它是通過Flask-RESTful API errors功能的「設計」處理的。 記錄拋出的異常並返回errors字典中定義的相應響應。

app = Flask(__name__) 
app.logger.setLevel(logging.CRITICAL) 

我想你實際上必須將其設置爲CRITICAL,因爲仍然得到記錄這些錯誤:

但是,可以通過修改瓶的記錄器這樣的日誌級別更改日誌輸出水平據我所知即使在日誌級別ERROR

此外,Flask和Flask-RESTful都是開源的。這就是說,在查看代碼後我發現the function of a Flask app that is responsible for adding the exception traceback to the log(Flask版本0.11.1)。 當然,你可以創建你自己的App類(擴展Flask的原始類),它覆蓋了這個方法(或者它的調用者)並且做了其他的事情。但是,如果您使用這樣的非法文檔,則在更新Flask版本時應該小心。

+0

嗯好的。奇怪的是,沒有一種方法可以防止錯誤在被正確處理時被記錄(不管錯誤級別)!但是,好吧。 – guywhoneedsahand

+0

不幸的是,在使用Flask(-RESTful)時我還沒有看到其他的東西。然而,我再次查看了Flask(-RESTful)的源代碼,並發現了一些可以幫助你實現你想要做的事情(並將我的答案提升到可接受的水平:P)。 – mxscho