在 Flask 中,销毁回调通常是指在应用程序关闭时执行的操作,这些操作可以包括清理资源、关闭数据库连接、保存状态等。Flask 提供了一个 teardown_request 钩子,允许你注册销毁回调函数,在每个请求结束时执行。

下面是一个简单的例子,演示如何使用 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.pingtaimeng.com/article/detail/7334/Flask