Add Redis-based rate limiting with FastAPI Depends integration + configurable strategy via environment variables
This PR introduces a complete, dependency-based Rate Limiting system for the FastAPI backend with Redis integration, configurable strategies, and automated validation through Settings. The implementation avoids middleware complexity and instead leverages FastAPI’s dependency injection system to enforce rate limiting at the endpoint level.
-
Rate Limiting via FastAPI Depends Adds a RateLimiter class usable via Depends.
@router.get("/users", dependencies=[Depends(RateLimiter(times=2, seconds=5))]) -
Redis-backed Sliding Window Strategy Implements a redis-based sliding window rate limiter.
Uses Redis key patterns containing:
- identifier strategy (ip/user/header)
- HTTP method + path
-
Strategy & Redis URL now configurable via .env
New environment variables added:
RATE_LIMITER_STRATEGY=sliding_window RATE_LIMIT_FAIL_OPEN=True REDIS_URL=redis://redis:6379/0