Team Ai
Apppublic

ruby2210/todo-manager

sourceHugging Facemitupdated 9mo agoView on Hugging Face
0likes
rate_limiter.py45 linesDownload Raw Back to core
1from slowapi import Limiter, _rate_limit_exceeded_handler2from slowapi.util import get_remote_address3from fastapi import FastAPI4from src.core.config import settings5 6 7# Initialize rate limiter8limiter = Limiter(key_func=get_remote_address)9 10 11def add_rate_limiting(app: FastAPI):12    """13    Add rate limiting to the FastAPI application.14 15    Args:16        app: FastAPI application instance17    """18    # Add rate limiter to app state19    app.state.limiter = limiter20 21    # Add rate limit exceeded handler22    app.add_exception_handler(429, _rate_limit_exceeded_handler)23 24    # Add middleware for rate limiting25    from slowapi.middleware import SlowAPIMiddleware26    app.add_middleware(SlowAPIMiddleware)27 28 29def get_rate_limit_config():30    """31    Get rate limit configuration based on environment.32 33    Returns:34        Dictionary with rate limit settings35    """36    if settings.ENVIRONMENT == "development":37        return {38            "requests_per_minute": 100,  # Higher rate limit for development39            "requests_per_hour": 100040        }41    else:42        return {43            "requests_per_minute": 10,   # Conservative rate limit for production44            "requests_per_hour": 10045        }