wangdongxu

jira:NYJ-1460 desc:init

1 import json 1 import json
2 import time 2 import time
3 import logging 3 import logging
  4 +
4 logger = logging.getLogger(__name__) 5 logger = logging.getLogger(__name__)
5 -from fastapi import FastAPI, Request 6 +from fastapi import Request
6 from starlette.middleware.base import BaseHTTPMiddleware 7 from starlette.middleware.base import BaseHTTPMiddleware
7 from starlette.responses import StreamingResponse 8 from starlette.responses import StreamingResponse
  9 +from config import settings
  10 +
8 11
9 class LoggingMiddleware(BaseHTTPMiddleware): 12 class LoggingMiddleware(BaseHTTPMiddleware):
10 - """HTTP请求/响应日志中间件."""  
11 13
  14 + # 日志记录路径前缀
12 async def dispatch(self, request: Request, call_next): 15 async def dispatch(self, request: Request, call_next):
13 - # 记录请求开始时间  
14 - start_time = time.time()  
15 -  
16 # 获取请求信息 16 # 获取请求信息
17 method = request.method 17 method = request.method
18 url = str(request.url) 18 url = str(request.url)
19 client_host = request.client.host if request.client else "unknown" 19 client_host = request.client.host if request.client else "unknown"
20 20
  21 + # 判断是否需要记录日志
  22 + should_log = request.url.path.startswith(settings.url_prefix)
  23 +
  24 + if should_log:
  25 + # 记录请求开始时间
  26 + start_time = time.time()
  27 +
21 # 读取请求体 28 # 读取请求体
22 request_body = None 29 request_body = None
23 if method in ("POST", "PUT", "PATCH"): 30 if method in ("POST", "PUT", "PATCH"):
@@ -77,3 +84,6 @@ class LoggingMiddleware(BaseHTTPMiddleware): @@ -77,3 +84,6 @@ class LoggingMiddleware(BaseHTTPMiddleware):
77 logger.info(f" Response Body: {response_body}") 84 logger.info(f" Response Body: {response_body}")
78 85
79 return response 86 return response
  87 + else:
  88 + # 不需要记录日志的请求,直接处理
  89 + return await call_next(request)
1 -"""API路由聚合模块."""  
2 -  
3 from fastapi import APIRouter 1 from fastapi import APIRouter
  2 +from config import settings
  3 +
  4 +api_router = APIRouter(prefix=settings.url_prefix)
4 5
5 -# 创建主路由  
6 -api_router = APIRouter(prefix="/aigc-embedding/api")  
7 6
8 def register_router(router: APIRouter, prefix: str): 7 def register_router(router: APIRouter, prefix: str):
9 api_router.include_router(router, prefix=prefix) 8 api_router.include_router(router, prefix=prefix)
10 -  
@@ -2,12 +2,10 @@ app_name: "Embedding Service" @@ -2,12 +2,10 @@ app_name: "Embedding Service"
2 app_version: "1.0.0" 2 app_version: "1.0.0"
3 port: 8000 3 port: 8000
4 debug: false 4 debug: false
  5 +url_prefix: "/aigc-embedding/api"
5 6
6 db_es_enable: true 7 db_es_enable: true
7 db_es_url: "http://localhost:9200" 8 db_es_url: "http://localhost:9200"
8 -db_postgres_enable: false  
9 -db_postgres_url: "postgresql://postgres:postgres@localhost:5432/postgres"  
10 9
11 -service:  
12 - face:  
13 - db_client: "es" 10 +#db_postgres_enable: false
  11 +#db_postgres_url: "postgresql://postgres:postgres@localhost:5432/postgres"