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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for python-redis-rate-limit-0.0.9.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57a4f30d7e0b8d3f51097bf0079998350d8ef53cb43988520b3780c70804fc5f |
|
MD5 | 3c0240f01687eed35784a1bcd91ef81d |
|
BLAKE2b-256 | b1f0789ba4625ba7a21e9e0c2dbc35cc6a2711107208d44baac88fc310088f94 |