gpt4 book ai didi

python - Flask-Restful 在非 Debug模式下从 Flask 接管异常处理

转载 作者:太空狗 更新时间:2023-10-30 01:27:54 29 4
gpt4 key购买 nike

我在开发过程中使用了 Flask 的异常处理 (@app.errorhander(MyException)),即使对于来自 Flask-Restful 端点的异常也能正常工作。

但是,我注意到当切换到 debug=False 时,Flask-Restful 正在完全接管异常处理(因为这个 propagate_exceptionsFalse 也是)。我喜欢 Flask-Restful 为所有未处理的异常发送内部服务器错误,但不幸的是,这也发生在那些有 Flask 异常处理程序的情况下(当这些异常来自 Flask-Restful 端点时)。

有没有办法告诉 Flask-Restful 只处理 Flask 错误处理程序不会处理的异常?如果不是,我能否将某些异常类型排除在 Flask-Restful 处理之外,以便由 Flask 处理它们?

我最后的选择是覆盖 Flask-Restful 的 Api.handle_error 并自己实现这个逻辑,但我想先使用现有的 API...

最佳答案

简而言之,我的解决方案就是创建 Api 的子类,将其修改为仅处理 HTTPException 类型的异常。

from flask_restful import Api as _Api
from werkzeug.exceptions import HTTPException

class Api(_Api):
def error_router(self, original_handler, e):
""" Override original error_router to only handle HTTPExceptions. """
if self._has_fr_route() and isinstance(e, HTTPException):
try:
return self.handle_error(e)
except Exception:
pass # Fall through to original handler
return original_handler(e)

也就是说,我认为重写 app.handle_user_exceptionapp.handle_exception 首先是一个糟糕的设计决策,原因有几个。

关于python - Flask-Restful 在非 Debug模式下从 Flask 接管异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076650/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com