Skip to content

Ratelink v1.0.0 - Production-Ready Rate Limiting for Python

Latest

Choose a tag to compare

@vladlen-codes vladlen-codes released this 19 Mar 18:06
eb17878

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 ratelink
from 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