gpt4 book ai didi

ruby-on-rails - 如何在 ruby​​ on rails 中添加速率限制器?

转载 作者:行者123 更新时间:2023-12-05 07:09:00 24 4
gpt4 key购买 nike

在我的 ruby​​ on rails 应用程序中,我面临着 ceratin 性能问题。在某些情况下,超过 2500 个请求一次来自同一个 IP 地址。所以我用了https://github.com/kickstarter/rack-attack添加速率限制器并跟踪来自 ip 地址的所有请求,并通过将其存储在动态表中来跟踪它们。但是在一定的时间间隔内如何跟踪它们(即)在 5 秒内有多少请求来自同一 IP 地址。

最佳答案

But for certain interval how can track them (i.e) within 5 seconds how many request came from the same ip address.

要将每个 IP 的数量限制为每 5 秒 10 个请求,您可以使用:

# config/initializers/rack_attack.rb

Rack::Attack.throttle('ip limit', limit: 10, period: 5) do |request|
request.ip
end

如果单个 IP 在 5 秒内发出超过 10 个请求,它会收到“429 Too Many Requests”响应。

请注意,Rack Attack 使用“固定窗口”方法,在给定的持续时间内允许最多两倍的请求。例如,使用上述设置,您可以在一个窗口结束时发出 10 个请求,在下一个窗口开始时发出另外 10 个请求,所有这些都在 5 秒内(甚至更短)。

关于ruby-on-rails - 如何在 ruby​​ on rails 中添加速率限制器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61766593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com