在http长连接中,可能需要在请求的开始与结束时进行资源的申请与释放。flask支持请求上下文,以及相应的回调。
下面代码演示如何使用修饰器将函数注册为请求事件的回调函数。
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello'
@app.route('/a')
def a():
return 'Hello a'
@app.before_request
def befor_request():
if request.url_rule.rule == '/a':
print('************before_request*************')
# acquire some resource
@app.teardown_request
def teardown_request(exception):
if request.url_rule.rule == '/a':
print('******************teardown_request***********')
# release resource
if __name__=='__main__':
app.run(host='0.0.0.0', debug=True)
在befor_request和teardow_request函数中,通过匹配URL路由规则,实现了只对特定请求进行处理。