https://github.com/glef1x/fastapi-ratelimiter
🏄🏼♂️ Redis-based rate-limiting for FastAPI
https://github.com/glef1x/fastapi-ratelimiter
asgi asgi-middleware asyncio fastapi ratelimit redis
Last synced: 10 days ago
JSON representation
🏄🏼♂️ Redis-based rate-limiting for FastAPI
- Host: GitHub
- URL: https://github.com/glef1x/fastapi-ratelimiter
- Owner: GLEF1X
- License: gpl-3.0
- Created: 2022-02-12T19:19:07.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-04-25T06:14:19.000Z (about 1 year ago)
- Last Synced: 2025-04-14T03:17:49.175Z (11 days ago)
- Topics: asgi, asgi-middleware, asyncio, fastapi, ratelimit, redis
- Language: Python
- Homepage:
- Size: 58.6 KB
- Stars: 12
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FastAPI Ratelimiter
[]
**Documentation**: https://fastapi-ratelimit.readthedocs.io/en/latest/
## Quick start:
```python
import asyncio
import aioredis
import uvicorn
from fastapi import FastAPI, Depends
from starlette.responses import JSONResponsefrom fastapi_ratelimiter import RateLimited, RedisDependencyMarker
from fastapi_ratelimiter.strategies import BucketingRateLimitStrategyapp = FastAPI()
redis = aioredis.from_url("redis://localhost")@app.get(
"/some_expensive_call", response_class=JSONResponse,
dependencies=[
Depends(RateLimited(BucketingRateLimitStrategy(rate="10/60s")))
]
)
async def handle_test_endpoint():
await asyncio.sleep(5)
return {"hello": "world"}app.dependency_overrides[RedisDependencyMarker] = lambda: redis
if __name__ == '__main__':
uvicorn.run(app)
```