下面是一个简单的例子,演示如何使用 teardown_request 钩子注册销毁回调函数:
from flask import Flask, g
app = Flask(__name__)
# 在请求之前执行的操作
@app.before_request
def before_request():
g.start_time = time.time()
# 在请求之后执行的操作
@app.after_request
def after_request(response):
# 在响应头中添加耗时信息
elapsed_time = time.time() - g.start_time
response.headers['X-Elapsed-Time'] = str(elapsed_time)
return response
# 销毁回调函数,在请求结束时执行
@app.teardown_request
def teardown_request(exception=None):
# 在请求结束时执行的清理操作
print("Request finished. Cleaning up...")
# 路由示例
@app.route('/')
def index():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
在上述例子中:
- before_request 装饰器用于在每个请求开始时执行 before_request 函数,在这里我们记录了请求的开始时间。
- after_request 装饰器用于在每个请求结束时执行 after_request 函数,这里我们计算了请求的耗时,并将其添加到响应头中。
- teardown_request 装饰器用于注册销毁回调函数 teardown_request,在每个请求结束时执行,用于执行清理操作。
销毁回调函数通常用于释放资源、关闭数据库连接、保存状态等清理操作。在这里,你可以根据实际需求注册多个销毁回调函数。注意,在销毁回调函数中,你可以访问全局变量 g 中存储的数据,这对于在请求生命周期内传递一些状态信息非常有用。
转载请注明出处:http://www.zyzy.cn/article/detail/7334/Flask