首页 > 解决方案 > 在 Eve 中启用速率限制

问题描述

我一直在寻找使用 Eve 启用速率限制功能,但几乎没有找到关于如何完全启用它的文档或示例。我为 HTTP 动词添加了 RATE_LIMIT_GET 和其他配置选项,并将 redis 参数传递给 Eve() 构造函数。我也在同一台服务器上本地运行redis。还有什么需要的吗?任何提示或建议将不胜感激。

标签: pythonrate-limitingeve

解决方案


我的问题原来是我在 Docker 中运行,并且“localhost”(实例化 Redis 时的默认值)无法解析为容器的 IP 地址。因此,当我在 run.py 文件中配置 Redis 服务器时,我必须将主机名从“localhost”更改为容器的 IP 地址。最后,由于其他原因,我让 Redis 在另一个名为“redis”的容器中运行,因此我在代码中使用了该 Redis 实例,但使用了一个单独的数据库:

redis_svr = redis.Redis(host='redis', db=1)
print('Redis server = ' + str(redis_svr), file=sys.stderr)
app = Eve(auth=BearerAuth, static_folder='templates', redis=redis_svr)

在 settings.py 文件中,我添加了这些选项,并且在 redis db 工作的情况下,速率限制也有效:

#Rate Limit requests per 60 seconds
RATE_LIMIT_POST = (12, 60)
RATE_LIMIT_PATCH = (12, 60)
RATE_LIMIT_DELETE = (12, 60)

推荐阅读