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

时间:2015-10-29 20:04:19

标签: python flask flask-restful

我使用errorhandlers来捕获并处理某些类型的异常:

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

DEBUGTrue时,这种情况正常,隐式地将PROPAGATE_EXCEPTIONS设置为True。当DEBUGFalse时,PROPAGATE_EXCEPTIONS默认为False,Flask会针对所有引发的错误返回500,忽略已注册的errorhandler。在这种情况下,将PROPAGATE_EXCEPTIONS设置为True会更正错误处理。

我想知道的是:

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

  • 为什么Flask在调试与非调试中对此配置有不同的默认值?

1 个答案:

答案 0 :(得分:1)

您应该添加 app.config['PROPAGATE_EXCEPTIONS'] = True 发生这种情况是因为flask覆盖了通常的错误处理代码(适用于其控制下的所有路由)。