问:
Flask 中 @app.before_request
、@app.after_request
和 @app.teardown_request
是拿来做什么的,什么时候应该使用,他们在什么情况下才执行?
@app.before_request
def before_request():
pass
@app.after_request
def after_request():
pass
@app.teardown_request
def teardown_request():
pass
答:
flask
中又两种 context
(上下文),分别是 application context
和 request context
。
其中 request
就是 request context
。当 HTTP 请求过来的时候,进入这个上下文。
题主的那些方法都是一些 flaks
的 hooks
。用于针对 request
做一些操作,比如
before_request
:在请求收到之前绑定一个函数做一些事情。after_request
: 每一个请求之后绑定一个函数,如果请求没有异常。teardown_request
: 每一个请求之后绑定一个函数,即使遇到了异常。
至于用来干嘛?可以做很多关于request pre
的事情,和request after
的事情。
比如,before_request
的时候创建一个 db
连接,然后 teardown_request
的时候断开这个连接。