我使用errorhandlers来捕获并处理某些类型的异常:
@app.errorhandler(CustomException)
def handle_custom_exception(error):
return redirect('redirect-path', code=301)
当DEBUG
为True
时,这种情况正常,隐式地将PROPAGATE_EXCEPTIONS
设置为True
。当DEBUG
为False
时,PROPAGATE_EXCEPTIONS
默认为False
,Flask会针对所有引发的错误返回500
,忽略已注册的errorhandler
。在这种情况下,将PROPAGATE_EXCEPTIONS
设置为True
会更正错误处理。
我想知道的是:
在生产中启用PROPAGATE_EXCEPTIONS
是否安全?我应该关注任何副作用吗?
为什么Flask在调试与非调试中对此配置有不同的默认值?
答案 0 :(得分:1)
您应该添加
app.config['PROPAGATE_EXCEPTIONS'] = True
发生这种情况是因为flask覆盖了通常的错误处理代码(适用于其控制下的所有路由)。