【问题标题】:Flask restful - Exception handling traceback?Flask restful - 异常处理回溯?
【发布时间】:2016-10-17 03:19:43
【问题描述】:

我正在使用 Flask Restful 来构建 API。我有许多带有可能引发自定义异常的方法的模型类(例如:我的用户模型类上的 AuthFailed 异常)。我正在使用记录在here 中的自定义错误处理来处理此问题(以便在身份验证失败时发送适当的响应)。到现在为止还挺好。但是,我注意到当引发异常时,尽管发回了正确的响应 JSON 和状态,但我仍然得到不理想的回溯。通常,如果我使用 try-except 块处理错误(在烧瓶之外),则 except 可以捕获错误并处理它(防止回溯)。那么这里的正确方法是什么?我是否误解了如何使用错误功能?

【问题讨论】:

    标签: python flask flask-restful


    【解决方案1】:

    不幸的是,Flask-RESTful API errors 功能的“设计”是这样处理的。 记录抛出的异常,并返回errors dict中定义的相应响应。

    但是,您可以通过修改 Flask 的 logger 的日志级别来更改日志输出的级别,如下所示:

    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 版本时应小心。

    【讨论】:

    • 嗯好的。似乎很奇怪,当错误得到充分处理时,没有办法防止错误被记录(无论错误级别如何)!但是哦,好吧。
    • 不幸的是,我在使用 Flask(-RESTful) 时没有看到其他东西。但是,我再次查看了 Flask(-RESTful) 的源代码,发现了一些可以帮助您实现您想做的事情(并将我的答案提高到可接受的水平:P)的东西。
    猜你喜欢
    • 2012-04-21
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多