也许我没有看到documentation中的某些内容。
我想不只是处理一些http错误,而是所有异常。原因 - 我想使用我自己的自定义逻辑记录它们(听起来像重新发明轮子,但我需要完全控制日志记录。我不希望服务器在异常情况下瘫痪,但仅限于特定请求的炸弹
这就是我现在启动Flask的方式。这里app.run
启动服务器。每当发生异常时,如何指示它调用我的异常处理程序方法?
def main():
args = parse_args()
app.config['PROPAGATE_EXCEPTIONS'] = True
flask_options = {'port' : args.port}
if args.host == 'public':
flask_options['host'] = '0.0.0.0'
app.run(**flask_options)
if __name__ == '__main__':
_sys.exit(main())
答案 0 :(得分:16)
您应该使用errorhandler
,请参阅文档http://flask.pocoo.org/docs/patterns/errorpages/#error-handlers和http://flask.pocoo.org/docs/api/#flask.Flask.errorhandler。允许您获取调度程序中引发的所有异常,但不处理错误处理程序中的异常。例如,处理所有异常:
@app.errorhandler(Exception)
def all_exception_handler(error):
return 'Error', 500
在这种情况下,我更喜欢显式异常处理程序或使用装饰器(基于类的视图)。
答案 1 :(得分:0)
尝试这样的事情:
@app.errorhandler(Exception)
def all_exception_handler(error):
return "Error: " + error.code