EASY2DIGITAL 国际站简体中文版

Flask Limiter – 自定义 API、应用程序使用的速率限制

SaaS或BaaS或API变现的根本途径是为客户提供不同的服务和计划。因此用户可以选择并购买他们认为足够的计划配额并支付合理的价格。 Flask limiter 具有现有的模块和参数,供您的应用程序采用和构建这些功能。使用此扩展可以轻松轻松地升级您的 SaaS。

在本章中,我将讨论 Flask Limiter 及其相关功能和参数。读完本文后,您可以掌握技能并开始为您的应用程序配备 Flask 速率限制,这些限制用于为买家设置和提供不同的计划。

目录:使用 Flask Limiter 自定义 Web 应用程序、API 和 SaaS 使用率限制

什么是烧瓶限制器

Flask limiter 是一个 Flask 扩展包,可以让我们轻松地向端点添加速率限制功能。除了限制速率之外,还可以使用RATELIMIT_HEADERS_ENABLED配置将速率限制信息放在 HTTP 标头中。因此,我们不需要自己编写HTTP头信息。除此之外,它还支持可配置的存储后端,以及 Redis、内存、Memcached 等的当前实现。

它为 Flask 应用程序提供速率限制功能。通过将扩展添加到您的 Flask 应用程序,您可以在不同级别和层级配置各种速率限制。它们是应用程序范围内的、每个蓝图、路线、资源等。

所有路由均应用默认速率限制:每天 200 个、每小时 50 个。我们甚至可以设置多个限制,我们只需要使用分隔符来分隔它们。例如,我们可以同时将限制设置为每分钟 100 个请求和每小时 1000 个请求。

安装和模块导入

要安装Flask limiter,我们可以打开计算机终端并输入pip3 install Flask-limiter 。只需10秒即可完成安装。

然后,我们需要将 Flask 限制器模块和库导入到您的 Python 脚本中。下面是两个主要模块。

限制器是构造函数,我们可以创建一个全局级别的限制器,并使用 Flask 应用程序进行配置。同时, get_remote_addressskey_func值,用于标识请求数据的用户的IP地址。

全局初始化限制器

通过使用构造函数 – limiter,我们可以使用 Flask App 配置限制器。在此配置中,可以设置默认的评级限制, key_func即get_remote_address。

装饰以声明速率限制

除了配置中设置的全局默认限制之外,我们还可以通过在每个 Flask 应用程序路由中使用装饰器限制来自定义评级限制。

例如,有一些核心参数经常被用来装饰路线。它们是限制值、 exempt_whenkey_func/lambdaerror_message 。下面是使用这些参数在路由中创建装饰器的示例

key_func/lambda提取速率限制的唯一标识符。默认值是请求的远程地址。但我们可以通过使用 Flask 登录来为特定的当前用户进行自定义和设置。关于用户认证的细节,我会发布其他文章来详细阐述。

Share_Limit()

适用于多条路由共享速率限制的场景。例如,当您想要使用具有伞率限制的相同资源来保护路由时。

通常,方法是创建一个具有实例限制器和方法shared_limit的变量

在shared_limit方法中,我们可以设置限制值和范围。然后,可以在您希望它们彼此共享的路由中使用该变量。

豁免_当

当满足给定条件时,每项限制均可豁免。这些条件可以通过在定义限制时提供可调用对象作为exempt_when参数来指定。

Exempt_when 非常有用,因为它可以排除一些与用户身份不匹配的情况。例如,如果我是访问页面的高级会员,则页面请求限制可能与其他会员不同。所以该路由中的限制值是针对其他成员的。另一方面,声望会员可能会使用自定义函数中的全局函数或另一个函数。

Python 和 Flask Limiter 脚本的完整示例

如果您对第 56 章的完整 python 脚本感兴趣 – 使用 Flask Limiter 自定义 Web 应用程序、API 和 SaaS 使用的速率限制,请添加消息“第 56 章”来订阅我们的时事通讯。我们会立即将脚本发送到您的邮箱。

我希望您喜欢阅读第 56 章 – 使用 Flask Limiter 自定义 Web 应用程序、API 和 SaaS 使用的速率限制。如果您这样做了,请通过执行下列操作之一来支持我们,因为这总是对我们的频道有所帮助。

退出移动版