t2m / src /app /middleware /performance.py
thanhkt's picture
implement core api
50a7bf0
"""
Performance optimization middleware for FastAPI.
This module provides middleware for request deduplication, response caching,
connection pool optimization, and performance monitoring.
"""
import logging
from typing import Callable
from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware
from ..core.performance import PerformanceMiddleware
from ..core.config import get_settings
logger = logging.getLogger(__name__)
settings = get_settings()
def setup_performance_middleware(app: FastAPI) -> None:
"""
Set up performance optimization middleware.
Args:
app: FastAPI application instance
"""
try:
# Add performance middleware
app.add_middleware(
PerformanceMiddleware,
enable_deduplication=not settings.is_development # Disable in dev for easier debugging
)
logger.info("Performance middleware configured successfully")
except Exception as e:
logger.error(f"Failed to configure performance middleware: {e}")
raise
class AsyncProcessingMiddleware(BaseHTTPMiddleware):
"""
Middleware for optimizing async processing.
Provides connection pooling optimization and async operation monitoring.
"""
async def dispatch(self, request, call_next):
"""Process request with async optimizations."""
# Add any async-specific optimizations here
response = await call_next(request)
return response
def setup_async_middleware(app: FastAPI) -> None:
"""
Set up async processing middleware.
Args:
app: FastAPI application instance
"""
try:
app.add_middleware(AsyncProcessingMiddleware)
logger.info("Async processing middleware configured successfully")
except Exception as e:
logger.error(f"Failed to configure async middleware: {e}")
raise