基于Redis的Python速率限制器。
项目描述
此库提供了一个在Redis >= 2.6.0之上实现的速率限制算法的抽象。
支持的Python版本:2.7,3.5+
示例:每秒10个请求
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'
示例:用作装饰器
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'
示例:每分钟600个请求
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'
示例:每小时100个请求
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'
示例:您也可以设置一个工厂以便以后使用
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'
示例:您还可以传递一个可选的Redis池
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'
项目详情
关闭
python-redis-rate-limit-0.0.9.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 57a4f30d7e0b8d3f51097bf0079998350d8ef53cb43988520b3780c70804fc5f |
|
MD5 | 3c0240f01687eed35784a1bcd91ef81d |
|
BLAKE2b-256 | b1f0789ba4625ba7a21e9e0c2dbc35cc6a2711107208d44baac88fc310088f94 |