29 lines
802 B
Python
29 lines
802 B
Python
import time
|
|
|
|
from starlette.middleware import Middleware
|
|
from starlette.middleware.cors import CORSMiddleware
|
|
from starlette.middleware.base import BaseHTTPMiddleware
|
|
from starlette.middleware.base import RequestResponseEndpoint
|
|
from starlette.requests import Request
|
|
from starlette.responses import Response
|
|
|
|
from common.logs import http
|
|
|
|
|
|
class HttpLogInfoMiddleware(BaseHTTPMiddleware):
|
|
"""请求耗时 日志"""
|
|
async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response:
|
|
start = time.time()
|
|
response = await call_next(request)
|
|
http(request, response, time.time() - start)
|
|
return response
|
|
|
|
|
|
middlewares = [
|
|
Middleware(CORSMiddleware, allow_origins=['*']),
|
|
Middleware(HttpLogInfoMiddleware)
|
|
]
|
|
|
|
|
|
__all__ = [middlewares]
|