From 044fa0f30b4e3f6a29e438b9f6cd52b4b4f9a008 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Thu, 11 Dec 2025 17:00:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E6=B8=85=E7=90=86=E4=B8=AD=E9=97=B4=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../middlewares/context_middleware.py | 29 +++++++++++++++++++ ruoyi-fastapi-backend/middlewares/handle.py | 3 ++ 2 files changed, 32 insertions(+) create mode 100644 ruoyi-fastapi-backend/middlewares/context_middleware.py diff --git a/ruoyi-fastapi-backend/middlewares/context_middleware.py b/ruoyi-fastapi-backend/middlewares/context_middleware.py new file mode 100644 index 0000000..89c9054 --- /dev/null +++ b/ruoyi-fastapi-backend/middlewares/context_middleware.py @@ -0,0 +1,29 @@ +from fastapi import FastAPI, Request +from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint +from starlette.responses import Response + +from common.context import RequestContext + + +class ContextCleanupMiddleware(BaseHTTPMiddleware): + """ + 上下文清理中间件 + """ + + async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response: + """ + 在每个请求处理完成后清理上下文信息 + """ + response = await call_next(request) + # 请求处理完成后清理所有上下文变量 + RequestContext.clear_all() + return response + + +def add_context_cleanup_middleware(app: FastAPI) -> None: + """ + 添加上下文清理中间件 + + :param app: FastAPI对象 + """ + app.add_middleware(ContextCleanupMiddleware) diff --git a/ruoyi-fastapi-backend/middlewares/handle.py b/ruoyi-fastapi-backend/middlewares/handle.py index bc2aca9..235bc6a 100644 --- a/ruoyi-fastapi-backend/middlewares/handle.py +++ b/ruoyi-fastapi-backend/middlewares/handle.py @@ -1,5 +1,6 @@ from fastapi import FastAPI +from middlewares.context_middleware import add_context_cleanup_middleware from middlewares.cors_middleware import add_cors_middleware from middlewares.gzip_middleware import add_gzip_middleware from middlewares.trace_middleware import add_trace_middleware @@ -9,6 +10,8 @@ def handle_middleware(app: FastAPI) -> None: """ 全局中间件处理 """ + # 加载上下文清理中间件 + add_context_cleanup_middleware(app) # 加载跨域中间件 add_cors_middleware(app) # 加载gzip压缩中间件