当前位置: 首页 > 网络应用技术

FastAPI接口当前限制

时间:2023-03-05 18:24:02 网络应用技术

  如果没有接口限制,则可能导致服务器负载不平衡,密码正在通过密码进行破解,并引起恶意请求,这会导致服务器的额外费用,并拒绝服务攻击。

  因此,有必要在界面上做好工作。

  如何进行接口限制?有4个常见接口限制:

  1.固定窗户计数器

  例如,该请求需要每小时10次,并且直接丢弃了10次以上。它有时有时超过10次,最多可达2次。例如,固定窗口是整个点,在8:50到9:00之间发送了10条请求,并发送10个请求,从9至9:10发送,每小时发送20个请求,发送了20个请求。

  2.滑动窗口计数器

  这解决了1个问题,但时间间隔的准确性越高,算法所需的空间越大。

  3.泄漏枪管算法

  泄漏算法主要由队列实现。服务请求将存储在队列中。该服务的提供商将以固定的速率从队列中取出请求并从队列中执行。泄漏算法的缺陷也很明显。当短时间内有大量紧急情况时,即使目前服务器没有任何负载,每个请求都必须等待队列中的一段时间才能响应。

  4.令牌枪管算法

  令牌以固定速率生成。生成的令牌存储在令牌枪管中并存储。如果令牌桶已满,则多余的令牌将直接丢弃。当请求到达时,您将尝试从令牌栏中获取令牌。iMplement。如果存储桶为空,则将尝试采用令牌的请求将直接丢弃。代币枪管算法不仅可以将所有请求分发给时间间隔,但也接受服务器在该范围内的紧急情况。

  也许朋友会问,为什么不根据IP地址限制电流?实际上,可以做到这一点,但不是那么主流。

  由于根据IP地址需要当前限制,因此将发生两个问题。一个是保存IP地址是一个问题。如果接口是群集,则您还将将IP地址保存在集中式数据库中。最好是重新记录第二个是意外伤害正常请求,因为大型局域网,其导出IP是一个,然后限制该IP的请求可能会导致普通用户被困。

  在上述四种方法中,最简单和实用的是滑动窗口计数器。

  Django REST框架带有流式限制[1]:

  在这里,我们分享了FastApi当前的3种方法:

  1.慢速[2]

  根据烧瓶限制者,Slotapi被重写。计数器默认存储在内存中。具体用法如下:

  2. FastAPI限制器[3]

  需要重新保存计数器:

  3,asgi -rateLimit [4]

  例如,在每秒五个访问限制之后,请从60秒开始特定用户:

  上面建议没有它的Slodapi,因为恒星目前是最多的。

  以上是该共享的所有内容。如果您想了解更多信息,请转到公共帐户:Python编程学习圈,每日干货共享

  原始:https://juejin.cn/post/7098906924191580196