File size: 1,999 Bytes
50a7bf0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
"""

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