【问题标题】:Flask Middleware Class Raise Exception Not CatchingFlask 中间件类引发异常未捕获
【发布时间】:2021-07-27 20:15:57
【问题描述】:

这是app.py的一部分:

app = Flask(__name__)
app.config.from_object('SETTINGS')
app.wsgi_app = Middleware(app.wsgi_app, app)


@app.errorhandler(ValueError)
def all_exception_handler(error):
    print('Error Catched!')
    return 'Error Handler', 500

这是Middleware类的一部分:

class Middleware:
    def __init__(self, wsgi, app):
        self.wsgi = wsgi
        self.app = app


    def __call__(self, environ, start_response):

        raise ValueError('Value Error')

        return self.wsgi(environ, start_response)

所以我的问题是当我在 Middleware (raise ValueError('Value Error') 内引发 ValueError 异常时,@app.errorhandler(ValueError) 没有触发,因此我在控制台中没有收到 print('Error Catched!')

【问题讨论】:

    标签: python flask


    【解决方案1】:

    你好,我的朋友?

    我told you Middlewares 不在应用程序层(在请求之外/在 Flask 应用程序之外等)=> 应用程序错误处理程序将不起作用。只需将您的逻辑移至@app.before_request 或app.before_request_funcs

    【讨论】:

    • 可能你没看懂我之前的回答(不过我问清楚了没有)。只需使用@app.before_request + @app.errorhandler + flask.redirect()
    • 是的,我明白了,这就是我重新开始这个项目的原因,但无论如何使用 Django 会更容易,谢谢你的帮助
    • @KadiemAlqazzaz 我明白了……Django Middlewares 有点不同并且可以理解。无论如何,请随时在 cmets 中询问详细信息。祝你好运!
    猜你喜欢
    • 2020-09-04
    • 2012-06-05
    • 2019-11-02
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多