首页 > 解决方案 > 在 Ruby 中每小时执行一定数量的请求?

问题描述

我们使用了一个每小时施加速率限制的 API。

我想知道为我们自己的脚本每小时向 API 执行一定数量的请求的最佳方法是什么。即:每小时提出 10 次请求以不超过我们的限额并避免多收费用。

我在想只是sleep(60*6)在我的循环中使用,但 API 调用可能需要几分钟,所以它可能做的请求比允许的少得多。

传播我们的请求的最佳做法是什么?

编辑:

我就这样结束了,你们觉得呢?

while(queue.size > 0) do
  Thread.new {
    element = queue.pop
    # do the rate limited API calls and things 
  }
  sleep(60*6)
end

标签: ruby

解决方案


考虑机架攻击中间件

总而言之-您将redis特定客户端(通过IP,身份或任何其他形式知道)在给定时间内执行的请求数保留在某处(在内存中,在数据库中)。


推荐阅读