【问题标题】:Why do Flask rate limiting solutions use Redis?为什么 Flask 限速方案使用 Redis?
【发布时间】:2016-10-23 07:14:54
【问题描述】:

我想限制我的 Flask API 的速率。我找到了 2 个解决方案。

  1. Flask-Limiter 扩展。
  2. 来自使用 Redis 的 Flask 网站的 sn-p:http://flask.pocoo.org/snippets/70/

Flask-Limiter 可以在没有 Redis 的情况下根据远程地址对请求进行速率限制,Redis 的意义何在?

【问题讨论】:

  • 烧瓶限制器提供不同类型的策略。只有简单的策略才能“在没有 Redis 的远程地址的基础上”起作用。对于更复杂的烧瓶速率限制器也使用 Redis(或 memcached)。

标签: python flask redis rate-limiting


【解决方案1】:

Redis 允许您将速率限制状态存储在持久存储中。

这意味着您可以:

  1. 重新启动您的 Web 服务器或 Web 应用程序,但速率限制仍然有效。您不会因为工作进程被破坏并创建新进程而丢失最后一次请求的记录。
  2. 使用多个 Web 服务器或 Web 应用程序。这是因为速率限制状态存储在外部数据存储中,这也解决了共享数据同步和数据竞争的问题。您可以根据需要运行任意数量的网络服务器 - 速率限制在所有服务器之间共享。
  3. 查看限速状态。 Redis 提供了简单的 CLI 工具,允许您以特别的方式查看当前的活动数据,甚至监控传入的命令和请求。
  4. 让 Redis 为限速算法管理 TTL、LRU 等。 Redis 本质上支持这一点。

【讨论】:

    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2011-10-12
    • 2013-06-30
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    相关资源
    最近更新 更多