处理Python Flask中的BaseException

时间:2018-04-24 19:41:18

标签: python python-3.x flask

我正在尝试将Sentry集成到我的Flask应用程序中报告错误,但最近我遇到一个问题,当第三方库导致BaseException被抛入我的一个处理程序时。我看到Flask处理Exception没有问题,但BaseException基本上导致应用停止工作。一个简单的例子:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    raise BaseException('Bummer! Exception')
    return 'Hello world'

if __name__ == '__main__':
    app.run(debug=True, port=5004)

调用我得到的路线:

$ curl localhost:5004
curl: (52) Empty reply from server

随后对该应用程序的调用会使卷曲挂起,等待回复。

我尝试使用errorhandler装饰器,如下所示:

@app.errorhandler(BaseException)
def handle():
    print("Whoops.")

但是Flask给了我一个错误:

    assert issubclass(exc_class, Exception)
AssertionError

这是公平的。我知道这个第三方库应该是Exception的子类,而不是BaseException,但我仍然希望有一种方法可以在Flask中处理这些错误并结束请求。

0 个答案:

没有答案