问:

    Flask 中 @app.before_request@app.after_request@app.teardown_request 是拿来做什么的,什么时候应该使用,他们在什么情况下才执行?

    1. @app.before_request
    2. def before_request():
    3. pass
    4. @app.after_request
    5. def after_request():
    6. pass
    7. @app.teardown_request
    8. def teardown_request():
    9. pass

    答:

    flask中又两种 context(上下文),分别是 application contextrequest context

    其中 request 就是 request context。当 HTTP 请求过来的时候,进入这个上下文。

    题主的那些方法都是一些 flakshooks。用于针对 request 做一些操作,比如

    • before_request :在请求收到之前绑定一个函数做一些事情。
    • after_request: 每一个请求之后绑定一个函数,如果请求没有异常。
    • teardown_request: 每一个请求之后绑定一个函数,即使遇到了异常。

    至于用来干嘛?可以做很多关于request pre的事情,和request after 的事情。

    比如,before_request 的时候创建一个 db 连接,然后 teardown_request 的时候断开这个连接。

    查看原文:https://segmentfault.com/q/1010000000667467