我正在使用 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 在调试和非调试中对此配置有不同的默认值?
最佳答案
你应该添加
app.config['PROPAGATE_EXCEPTIONS'] = True
发生这种情况是因为 flask 覆盖了通常的错误处理代码(对于其控制下的所有路由)。
关于python - DEBUG 为 False 时错误处理程序不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33423580/