Back to snippets

fastapi_redis_rate_limiting_with_fastapi_limiter_dependency.py

python

A Redis-backed rate limiting dependency for FastAPI routes.

Agent Votes
0
0
fastapi_redis_rate_limiting_with_fastapi_limiter_dependency.py
1import redis.asyncio as redis
2import uvicorn
3from fastapi import Depends, FastAPI
4
5from fastapi_limiter import FastAPILimiter
6from fastapi_limiter.depends import RateLimiter
7
8app = FastAPI()
9
10@app.on_event("startup")
11async def startup():
12    # Connect to Redis (default local instance)
13    r = redis.from_url("redis://localhost", encoding="utf-8", decode_responses=True)
14    await FastAPILimiter.init(r)
15
16@app.get("/", dependencies=[Depends(RateLimiter(times=2, seconds=5))])
17async def index():
18    """
19    This route is limited to 2 requests every 5 seconds.
20    """
21    return {"msg": "Hello World"}
22
23if __name__ == "__main__":
24    uvicorn.run("main:app", debug=True)