Ratelink v1.0.0 - Initial Release
Production-ready rate limiting library for Python with multiple algorithms, backends, and framework integrations.
Features
🔧 Core Functionality
- 6 Algorithms: Token Bucket, Leaky Bucket, Fixed Window, Sliding Window, Sliding Window Log, GCRA
- 6+ Backends: Memory, Redis, PostgreSQL, DynamoDB, MongoDB, Multi-Region
- Type-Safe: 100% type hints with mypy validation
- Well-Tested: >90% test coverage across all modules
Framework Integration
- FastAPI - ASGI middleware and decorators
- Flask - Extension with string-based limits
- Django - Middleware with settings-based config
- aiohttp - Async middleware factory
Observability
- Prometheus metrics export
- StatsD integration
- Audit logging (JSON/plaintext)
- Event hooks for custom callbacks
- Distributed tracing (OpenTelemetry)
Advanced Features
- Priority-based rate limiting
- Quota pooling across resources
- Adaptive limits based on system health
- Hierarchical limits (global + per-user)
- Fair queuing for request ordering
Testing Utilities
- Mock rate limiters (3 modes)
- Time machine for deterministic testing
- Pytest fixtures for all backends
- 10 assertion helpers
- Load testing and benchmarking tools
Quick Start
pip install ratelinkfrom ratelink import RateLimiter
limiter = RateLimiter(algorithm="token_bucket", limit=100, window=60)
allowed, state = limiter.check("user:123")
if allowed:
print(f"✅ Allowed! {state['remaining']} remaining")
else:
print(f"❌ Rate limited! Retry after {state['retry_after']}s")Installation Options
# Basic
pip install ratelink
# With Redis
pip install ratelink[redis]
# With web frameworks
pip install ratelink[fastapi,flask,django,aiohttp]
# Everything
pip install ratelink[all]Documentation
Acknowledgments
Built with inspiration from django-ratelimit, slowapi, and flask-limiter, with significant improvements in architecture, features, and production-readiness.
📄 License
MIT License - see LICENSE file for details.
Full Changelog: Initial release