python - 在 Eve 中启用速率限制
问题描述
我一直在寻找使用 Eve 启用速率限制功能,但几乎没有找到关于如何完全启用它的文档或示例。我为 HTTP 动词添加了 RATE_LIMIT_GET 和其他配置选项,并将 redis 参数传递给 Eve() 构造函数。我也在同一台服务器上本地运行redis。还有什么需要的吗?任何提示或建议将不胜感激。
解决方案
我的问题原来是我在 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)
推荐阅读
- vim - 如何确保 formatoptions *never* 包含 `r` 或 `o`?
- javascript - 扫描直到找到 x 个项目?
- ios - 删除最后一项后如何隐藏 tableView 中的部分?
- commonjs - 编译成功后需要缓冲区的模块无法工作
- python - 如何使用 Keras 对 CNN 模型中的多个输入数据进行交叉验证
- react-admin - react-admin:处理自定义字段中的单击事件
- python - 重命名数据框中的列时出现语法错误
- java - 尝试按列打印二维数组
- devexpress - 如何从 UnicodeString 加载 TMemoryStream
- php - 像使用 $_GET 一样从 URL 值字符串创建变量