diff --git a/kubetix-api/main.py b/kubetix-api/main.py index 32b6dde..c01a18d 100644 --- a/kubetix-api/main.py +++ b/kubetix-api/main.py @@ -24,27 +24,13 @@ # Rate limiting (optional) # --------------------------------------------------------------------------- -try: - from slowapi import Limiter, _rate_limit_exceeded_handler - from slowapi.util import get_remote_address - from slowapi.errors import RateLimitExceeded - - HAS_RATE_LIMITING = True - limiter = Limiter( - key_func=get_remote_address, default_limits=["200 per day", "50 per hour"] - ) -except ImportError: - HAS_RATE_LIMITING = False - - # No-op limiter so decorators always work regardless of rate limiting config. - class _NoOpLimiter: - def limit(self, *args, **kwargs): - def decorator(f): - return f - - return decorator +from slowapi import Limiter, _rate_limit_exceeded_handler +from slowapi.errors import RateLimitExceeded +from slowapi.util import get_remote_address - limiter = _NoOpLimiter() +limiter = Limiter( + key_func=get_remote_address, default_limits=["200 per day", "50 per hour"] +) # --------------------------------------------------------------------------- # CORS middleware @@ -149,14 +135,8 @@ async def lifespan(app: FastAPI): lifespan=lifespan, ) -if HAS_RATE_LIMITING: - app.state.limiter = limiter - app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) - # Register slowapi startup handler (compatible with all FastAPI versions) - if hasattr(app, "add_event_handler"): - app.add_event_handler("startup", limiter.slowapi_startup) - else: - app.on_event("startup")(limiter.slowapi_startup) +app.state.limiter = limiter +app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) app.add_middleware( CORSMiddleware, diff --git a/kubetix-api/requirements.txt b/kubetix-api/requirements.txt index 7f448e2..158431a 100644 --- a/kubetix-api/requirements.txt +++ b/kubetix-api/requirements.txt @@ -7,3 +7,4 @@ python-multipart==0.0.32 pydantic==2.13.4 cryptography==49.0.0 httpx==0.28.1 +slowapi==0.1.9