Flask-Restful在非调试模式下接受Flask的异常处理

ora*_*nge 5 python flask flask-restful

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

然而,我注意到,切换到时debug=False,瓶的RESTful走的是完全例外处理过(与此propagate_exceptionsFalse太).我喜欢Flask-Restful为所有未处理的异常发送内部服务器错误,但遗憾的是,对于那些具有Flask异常处理程序的人(当这些异常来自Flask-Restful端点时)也会发生这种情况.

有没有办法告诉Flask-Restful只处理Flask错误处理程序无法处理的异常?如果没有,我可以将某些异常类型排除在Flask-Restful处理之外,那么它们会被Flask处理吗?

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

zwi*_*ier 4

简而言之,我的解决方案只是创建一个子类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)
Run Code Online (Sandbox Code Playgroud)

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