from slowapi import Limiter, _rate_limit_exceeded_handler from slowapi.errors import RateLimitExceeded from starlette.requests import Request from config import conf from core.app import app def get_unique_identification(request: Request) -> str: return request.client.host or "127.0.0.1" limiter = Limiter(key_func=get_unique_identification, storage_uri=conf.database.get('limiter_redis').url) app.state.limiter = limiter app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)