跳转到主要内容

基于Redis的Python速率限制器。

项目描述

https://github.com/EvoluxBR/python-redis-rate-limit/actions/workflows/python-package.yml/badge.svg https://img.shields.io/pypi/v/python-redis-rate-limit.svg https://img.shields.io/pypi/dm/python-redis-rate-limit.svg

此库提供了一个在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 (4.9 kB 查看哈希值)

上传时间 源代码

由以下组织支持