15 lines
560 B
Python
15 lines
560 B
Python
from slowapi import Limiter
|
|
from slowapi.util import get_remote_address
|
|
from slowapi.errors import RateLimitExceeded
|
|
from fastapi.responses import JSONResponse
|
|
from fastapi import Request
|
|
|
|
# создаём limiter с глобальным лимитом
|
|
limiter = Limiter(key_func=get_remote_address, default_limits=["10/minute"])
|
|
|
|
# обработчик ошибок
|
|
async def ratelimit_handler(request: Request, exc: RateLimitExceeded):
|
|
return JSONResponse(
|
|
status_code=429,
|
|
content={"detail": "Too many requests, try again later."},
|
|
) |