Python Rate Limiter based on Redis.
Project description
This lib offers an abstraction of a Rate Limit algorithm implemented on top of Redis >= 2.6.0.
Supported Python Versions: 2.7, 3.5+
Example: 10 requests per second
from redis_rate_limit import RateLimit, TooManyRequests try: with RateLimit(resource='users_list', client='192.168.0.10', max_requests=10): return '200 OK' except TooManyRequests: return '429 Too Many Requests'
Example: using as a decorator
from redis_rate_limit import RateLimit, TooManyRequests @RateLimit(resource='users_list', client='192.168.0.10', max_requests=10) def list_users(): return '200 OK' try: return list_users() except TooManyRequests: return '429 Too Many Requests'
Example: 600 requests per minute
from redis_rate_limit import RateLimit, TooManyRequests try: with RateLimit(resource='users_list', client='192.168.0.10', max_requests=600, expire=60): return '200 OK' except TooManyRequests: return '429 Too Many Requests'
Example: 100 requests per hour
from redis_rate_limit import RateLimit, TooManyRequests try: with RateLimit(resource='users_list', client='192.168.0.10', max_requests=100, expire=3600): return '200 OK' except TooManyRequests: return '429 Too Many Requests'
Example: you can also setup a factory to use it later
from redis_rate_limit import RateLimiter, TooManyRequests limiter = RateLimiter(resource='users_list', max_requests=100, expire=3600) try: with limiter.limit(client='192.168.0.10'): return '200 OK' except TooManyRequests: return '429 Too Many Requests'
Example: you can also pass an optional Redis Pool
import redis from redis_rate_limit import RateLimit, TooManyRequests redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0) try: with RateLimit(resource='users_list', client='192.168.0.10', max_requests=10, redis_pool=redis_pool): return '200 OK' except TooManyRequests: return '429 Too Many Requests'
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Built Distribution
Close
Hashes for python_redis_rate_limit-0.0.8-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9022b21eb49f63c09b52f2423dc2001968cb0d0483b1b106821ce75e4cc376e0 |
|
MD5 | a9e943306868b72a7630290443ec0674 |
|
BLAKE2-256 | 7a7639687719a5e82b7f1c663d42d1b5829a548569e642467d8ca4826e7ac591 |