为什么 Flask 限速解决方案使用 Redis?

2023-12-30

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

  1. The 烧瓶限制器 https://flask-limiter.readthedocs.io/en/stable/扩大。
  2. 使用 Redis 的 Flask 网站的片段:http://flask.pocoo.org/snippets/70/ http://flask.pocoo.org/snippets/70/

当 Flask-Limiter 能够在没有 Redis 的情况下根据远程地址对请求进行速率限制时,Redis 的意义是什么?


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

这意味着您可以:

  1. 重新启动您的 Web 服务器或 Web 应用程序,速率限制仍然有效。您不会因为工作进程被销毁并创建新进程而丢失最后发出的请求的记录。
  2. 使用多个 Web 服务器或 Web 应用程序。这是因为速率限制状态存储在外部数据存储中,这也解决了共享数据同步和数据竞争的问题。您可以根据需要运行任意数量的 Web 服务器 - 速率限制在所有服务器之间共享。
  3. 查看速率限制状态。 Redis 提供简单的 CLI 工具,允许您以临时方式查看当前活动数据,甚至监视传入的命令和请求。
  4. 让 Redis 管理 TTL、LRU 等限速算法。 Redis 本质上支持这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Flask 限速解决方案使用 Redis? 的相关文章

  • 如何并排绘制具有相同 X 坐标的条形图(“闪避”)

    import matplotlib pyplot as plt gridnumber range 1 4 b1 plt bar gridnumber 0 2 0 3 0 1 width 0 4 label Bar 1 align cente
  • 函数名称未定义

    我有一段代码 看起来像这样 if name main main def main print hello 但是 当我尝试运行此代码时 出现错误 NameError 名称 main 未定义 我是否没有在函数 def main 的第一行定义名称
  • 在 Python 中延迟转置列表

    所以 我有一个延迟生成的可迭代的三元组 我试图弄清楚如何将其转换为 3 个可迭代对象 分别由元组的第一个 第二个和第三个元素组成 然而 我希望这件事能懒惰地完成 所以 举例来说 我希望 1 2 3 4 5 6 7 8 9 将变成 1 4 7
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • 我可以同时打开两个 Tkinter Windows 吗?

    可以同时打开2个窗口吗 import tkinter as Tk import random import math root Tk Tk canvas Tk Canvas root background image Tk PhotoIma
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • Asyncio:从未检索到任务异常的怪异

    假设我有一个简单的代码 import asyncio async def exc print 1 0 loop asyncio get event loop loop create task exc try loop run forever
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • 使用 python 从 CSV 创建字典

    我有一个 CSV 格式的文件 其中 A B 和 C 是标题 我如何以Python方式将此CSV转换为以下形式的字典 A 1 B 4 C 7 A 2 B 5 C 8 A 3 B 6 C 9 到目前为止我正在尝试以下代码 import csv
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • 为什么 pip 已经是最新的了却要求我升级?

    我全新安装了 python 3 7 1 64 位 并使用最新的 pyCharm 作为我的 IDE 我在这台机器上没有安装其他 python 我去安装 numpy 并收到以下消息 venv C Users John PycharmProjec
  • 使用 Python-VLC 的 PyInstaller:无属性“media_player_new”错误

    我使用 Python VLC 创建视频播放器 并使用 PyInstaller 在 Windows 10 计算机上生成可执行文件 最初 它给了我错误 Import Error Failed to load dynlib dll libvlc
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • 使用具有可变数量索引的 numpy mggrid

    如何将 numpy mgrid 与可变数量的索引一起使用 我在 github 上找不到任何人将其与硬编码值以外的任何内容一起使用的示例 import numpy as np np mgrid 1 10 1 10 this works fin
  • 在python中使用编解码器utf-8打开文件错误

    我在 windows xp 和 python 2 6 4 上执行以下代码 但它显示 IOError 如何打开名称带有 utf 8 编解码器的文件 gt gt gt open unicode txt euc kr encode utf 8 T
  • 列表中的特定范围(python)

    我有一个从文本字符串中提取的整数列表 因此当我打印该列表 我称之为test I get 135 2256 1984 3985 1991 1023 1999 我想打印或制作一个仅包含特定范围内的数字的新列表 例如1000 2000之间 我尝试
  • 为什么我会在 Python 字符串格式中使用除 %r 之外的其他内容?

    我偶尔会使用 Python 字符串格式 这可以像这样完成 print int i Float f String s 54 34 434 some text 但是 这也可以这样做 print int r Float r String r 54
  • python 中的 F 字符串前缀给出语法错误[重复]

    这个问题在这里已经有答案了 我有一个名为 method 的变量 它的值是 POST 但是当我尝试运行时print f method method is used 它不断在最后一个双引号处给出语法错误 我找不到它这样做的原因 我正在使用 py
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中

随机推荐

  • vue.js:如何处理同一元素上的 click 和 dblclick 事件

    我有一个 vue 组件 其中包含单独的 click dblclick 事件 单击 取消 选择行 双击打开编辑表单 ul class data row 这样做 我会在双击时触发 3 个事件 两次单击事件 最后一次双击事件 由于单击事件首先触发
  • 如何将文本从 iOS Notes 应用程序导出到我的应用程序?

    我知道这是可能的 并且是许多大型应用程序所做的事情 但我无法在 UTI 扩展 UIActivityTypes 等中找出我需要特别使用的拼写 我正在尝试将我的应用程序添加到当您点击 iOS 上的 便笺 应用程序中的 导出 按钮时出现的应用程序
  • 为什么 Guid.ToByteArray() 以这种方式对字节进行排序?

    你打电话时ToByteArray 在 NET 中的 GUID 上 与 GUID 的字符串表示形式相比 结果数组中的字节顺序不是您所期望的 例如 对于以下表示为字符串的 GUID 11223344 5566 7788 9900 aabbccd
  • 哪些 .NET Framework 类实现 IDisposable

    似乎这必须在某个地方记录下来 但我没有发现在任何地方 也许我的谷歌魅力正在减弱 您意识到这取决于您的称呼 NET 框架类 您可能想要指定要查找的程序集 有了这些信息 您就可以加载这些程序集并使用反射来列出在给定程序集中实现 IDisposa
  • (加载“file.scm”)在Scheme的新环境中

    麻省理工学院计划 load 程序显然需要一个环境 http web mit edu scheme v9 0 1 doc mit scheme user Loading Files html作为参数 有什么方法可以 克隆 当前环境并将其传递到
  • Applescript 中的非阻塞对话框

    我必须编写一个小脚本来为我们的应用程序部署补丁 补丁 将替换应用程序中的几个文件 我决定使用 Applescript 部署补丁 需要复制的文件比较大 复制需要一定的时间 我想知道是否有任何方法可以获得一个不会阻止脚本执行的对话框 以便我可以
  • 如何组合两个数组而不重复值?

    我有两个数组 array 1 2 3 4 array 4 5 6 7 基于它们 我想生成一个仅包含唯一值的数组 array 1 2 3 4 5 6 7 PHP中有没有合适的函数 您可以使用array merge http php net a
  • 无法使用 CasperJS 提交表单 - 换句话说无法登录

    我正在尝试使用 CasperJS 使用方法登录 Tumblrstart fill and waitForUrl but cannot做这个 在我看来 表格没有提交 因为超时waitForUr每次都过期了 Terminal response
  • .net-core项目恢复的包目标始终是全局包目录

    我们有一个解决方案 其中一些项目是 net core 项目 一些是 普通 net 4 6 1 项目 在解决方案级别 我们有一个 NuGet config 文件 用于设置存储库路径
  • 如何捕获 SocketTimeoutException

    假设我有一个名为 SuperSocket 的套接字变量 有什么方法可以捕获超时异常吗 SuperSocket setSoTimeout 5000 catch SocketTimeoutException e System out print
  • mysql DECLARE WHILE 外部存储过程如何?

    我对 mysql 相当陌生 但有 MS SQL 经验 是否有可能声明变量并使用while陈述 外部存储过程 我只找到了人们这样做的例子 1 procedure created 2 execute proc 3 drop proc 建议我正确
  • 我可以在 Android/IOS Webview 中使用 navigator.mediaDevices.getUserMedia 吗?

    我在 Android IOS 的本机应用程序中使用 web api 时遇到一些问题 在webview中 我渲染了一个html 我想使用相机拍照 我搜索web api并找到了一个方法 那就是 navigator mediaDevices ge
  • C++中加宽和缩小的区别?

    有什么区别widening and 缩小在 C 中 铸造是什么意思 铸造有哪些类型 这是一般的转换 而不是 C 特有的 加宽 转换是从一种类型到另一种类型的转换 其中 目标 类型具有比 源 更大的范围或精度 例如 int 到 long fl
  • 使用 BigQuery 进行日志分析

    我正在尝试使用 BigQuery 进行日志分析 具体来说 我有一个 appengine 应用程序和一个 javascript 客户端 它将向 BigQuery 发送日志数据 在 bigquery 中 我将完整的日志文本存储在一列中 同时还将
  • 自定义S3中的404页面

    我在亚马逊存储桶和实例方面几乎是个新手 我现在要做的是错误 404 的自定义错误页面 现在显示的是默认错误页面 显示非用户友好的 XML 告诉没有找到该文件 有什么好的方法可以做到这一点吗 我发现文档非常不清楚 它说 提供这个自定义错误文档
  • 如何在 DynamoDB 中过滤嵌套数组对象

    我对 AWS DynamoDB 非常初学者 我想使用 SENDTO emailAddress 扫描 DynamoDB 电子邮件受保护 cdn cgi l email protection 作为过滤器表达式 数据库结构如下所示 ID NAME
  • 具有自定义单元格的 UITableView 在 iOS 6 上绘制良好,但在 iOS 7 中完全白色

    我正在 Xcode 5 上构建一个针对 iOS 6 的应用程序 我在使用自定义单元格构建表格视图时遇到问题 有趣的是 它一直工作得很好 直到我今天更新到 Xcode 5 0 2 我不知道发生了什么变化 当我弄乱 iOS 7 SDK 附带的白
  • 如何使用 OpenXML Sdk 替换段落的文本

    我正在使用 Net OpenXml SDK 2 0 解析一些 Openxml word 文档 作为处理的一部分 我需要用其他句子替换某些句子 在迭代这些段落时 我知道何时找到需要替换的内容 但我对如何替换它感到困惑 例如 假设我需要替换句子
  • 全局键盘挂钩不起作用

    我创建了一个全局键盘挂钩 Hook 在 DLL 中创建 pragma comment linker SECTION SHARED RWS pragma data seg SHARED static HHOOK hkb NULL static
  • 为什么 Flask 限速解决方案使用 Redis?

    我想限制我的 Flask API 的速率 我找到了2个解决方案 The 烧瓶限制器 https flask limiter readthedocs io en stable 扩大 使用 Redis 的 Flask 网站的片段 http fl