基于redis的python速率限制器。
python-redis-rate-limit的Python项目详细描述
这个lib提供了在 redis=2.6.0。
支持的Python版本:2.7、3.5、3.6
示例:每秒10个请求
fromredis_rate_limitimportRateLimit,TooManyRequeststry:withRateLimit(resource='users_list',client='192.168.0.10',max_requests=10):return'200 OK'exceptTooManyRequests:return'429 Too Many Requests'
示例:每分钟600个请求
fromredis_rate_limitimportRateLimit,TooManyRequeststry:withRateLimit(resource='users_list',client='192.168.0.10',max_requests=600,expire=60):return'200 OK'exceptTooManyRequests:return'429 Too Many Requests'
示例:每小时100个请求
fromredis_rate_limitimportRateLimit,TooManyRequeststry:withRateLimit(resource='users_list',client='192.168.0.10',max_requests=100,expire=3600):return'200 OK'exceptTooManyRequests:return'429 Too Many Requests'
示例:您还可以设置一个工厂,以便以后使用它
fromredis_rate_limitimportRateLimiter,TooManyRequestslimiter=RateLimiter(resource='users_list',max_requests=100,expire=3600)try:withlimiter.limit(client='192.168.0.10'):return'200 OK'exceptTooManyRequests:return'429 Too Many Requests'
示例:您还可以传递可选的redis池
importredisfromredis_rate_limitimportRateLimit,TooManyRequestsredis_pool=redis.ConnectionPool(host='127.0.0.1',port=6379,db=0)try:withRateLimit(resource='users_list',client='192.168.0.10',max_requests=10,redis_pool=redis_pool):return'200 OK'exceptTooManyRequests:return'429 Too Many Requests'