You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI中是否存在Flask teardown_request的等效实现?

FastAPI 中类似 Flask teardown_request 的实现方式

FastAPI 没有直接对应 Flask teardown_request 的内置装饰器,但可以通过带 yield 的依赖项实现请求结束后执行会话关闭逻辑,这是官方推荐的请求生命周期管理方案。

实现思路

定义一个包含 yield 的依赖函数:

  • yield 之前的代码会在请求处理前执行(按需添加)
  • yield 之后的代码会在请求结束后执行,无论请求是否成功、是否抛出异常,完全匹配 teardown_request 的行为

代码示例

全局应用(所有路由自动生效)

from fastapi import FastAPI, Depends
from models import storage

def close_session_on_teardown():
    yield
    # 请求结束后执行会话关闭
    storage.close_session()

# 全局注册依赖,所有路由都会自动执行请求后的清理操作
app = FastAPI(dependencies=[Depends(close_session_on_teardown)])

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}

单独路由应用(仅指定路由生效)

from fastapi import FastAPI, Depends
from models import storage

app = FastAPI()

def close_session_on_teardown():
    yield
    storage.close_session()

@app.get("/items/{item_id}", dependencies=[Depends(close_session_on_teardown)])
def read_item(item_id: int):
    return {"item_id": item_id}

严谨写法(确保异常场景下也能关闭会话)

如果需要更严谨的异常处理,可以结合 try/finally:

def close_session_on_teardown():
    try:
        yield
    finally:
        # 无论是否抛出异常,都会执行会话关闭
        storage.close_session()

内容的提问来源于stack exchange,提问作者coolboimax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:22:06