当DEBUG为False时,错误处理程序不会触发

gan*_*duG 8 python flask flask-restful

我正在使用错误处理程序来捕获和处理某些类型的异常:

@app.errorhandler(CustomException)
def handle_custom_exception(error):
    return redirect('redirect-path', code=301)
Run Code Online (Sandbox Code Playgroud)

当这正常工作DEBUGTrue,它隐式地设置PROPAGATE_EXCEPTIONSTrue为好.如果DEBUGFalse,虽然,PROPAGATE_EXCEPTIONS默认为False和瓶返回500用于抛出的所有错误,忽视了注册errorhandler秒.设置PROPAGATE_EXCEPTIONSTrue在这种情况下更正错误处理.

我想知道的是:

  • PROPAGATE_EXCEPTIONS在生产中启用是否安全?有什么副作用我应该关注吗?

  • 为什么Flask在调试与非调试中具有不同的默认值?

小智 2

您应该添加 app.config['PROPAGATE_EXCEPTIONS'] = True 它发生的原因是 Flask 覆盖了通常的错误处理代码(对于其控制下的所有路由)。

  • 这并没有回答“在生产中启用‘PROPAGATE_EXCEPTIONS’是否安全?” (2认同)