仅使用内存的烧瓶应用程序的幂等请求

Flask-Idempotent-Memor的Python项目详细描述


烧瓶幂等记忆

Build

这个叉是self-host video streaming project的一部分。在


Flask幂等元是Flask的一个非常简单(按设计)的幂等请求处理程序。作为扩展实现。最初的repo使用Redis作为锁和响应数据存储,相反,这个repo只是使用内存(一个字典变量和一个新类),以获得更高的速度和超级易用性,这将帮助您在Flask应用程序上的任何端点添加幂等性,只需单击几下。在

安装

$ pip install flask-idempotent-memory #(Not yet available)

使用

^{pr2}$
<form>
   {{ idempotent_input() }}
   <!-- the rest of your form --></form>

就这样!(好吧,如果默认值对您有效)

工作原理

任何在请求参数或post数据中包含\\\\$u幂等项key或请求头中包含X-idempotent-key的请求都将作为幂等请求进行跟踪。这在默认情况下只生效240秒,但这是可配置的。在

当第一个带有密钥的请求进来时,Flask幂等元将尝试在密钥存储中获得幂等性。如果密钥存储中不存在该密钥,那么它将像正常情况一样处理请求,并将响应保存在密钥存储中,以备将来请求返回。在

任何后续(同时或其他)请求都不会被重新处理,因为它的响应已经生成并存储在密钥存储中。然后,它们将等待主请求完成,检索先前的响应并返回该响应。在

为了减少内存使用,每次读密钥存储时,密钥存储都会根据清理间隔检查当前时间,如果满足,则密钥存储将删除所有过期的密钥。在

我为什么要在乎?在

您不能信任用户输入。这是web开发的规则之一。这并不能阻止恶意攻击表单提交的行为,但当用户提交两次页面,或由于网络故障或其他原因发送两次api请求时,它将有所帮助。这将防止这些重复提交及其任何后续结果。在

#配置

烧瓶幂等性要求Redis起作用。它默认在本地机器上使用redis,并且可以使用以下配置值。把它们放在你的烧瓶里

# In seconds, the timeout for a secondary request to wait for the first to#  completeIDEMPOTENT_TIMEOUT=60# In seconds, the amount of time to store the master response before#  expiration in key storeIDEMPOTENT_EXPIRE=240

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java不兼容类型:MainActivity无法转换为LifecycleOwner   java安卓是一种更有效的读取大文本文件的方法   java导出LWJGL本地人与项目?(IntelliJ IDEA)   JDK更新后,JavaJShell不再在下一行打印输出   父类对象上的继承Java比较子属性   Java:有没有一个容器可以有效地结合HashMap和ArrayList?   安卓 Java对象指针   java在annotationdriven Spring MVC应用程序中实现大气   java 安卓源代码构建应用找不到安卓supportv4。罐子   文件系统上的抽象层和Java中的jar/zip   java在水平滚动视图中添加多个图像?   java如何从firebase实时数据库中获取字符串数组   WIndows 10工作站上的java未满足链接错误   java命令在终端中工作,但在使用过程中出现“无结束引号”错误。执行官