ruby - 在 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
解决方案
考虑机架攻击中间件
总而言之-您将redis
特定客户端(通过IP,身份或任何其他形式知道)在给定时间内执行的请求数保留在某处(在内存中,在数据库中)。
推荐阅读
- c++ - 如何修改 std::adjacent_difference 以仅给出差异?
- python - 在类主体内的 for 循环中定义 Python 类型提示
- azure-logic-apps - Azure 逻辑应用 - 错误请求。Http 请求失败:内容不是有效的 JSON
- r - ggplot2:当低条使文本超过条的底部时,如何有条件地更改 geom_text 的 vjust
- python - Django:在 Django 模型中创建对象的自定义顺序
- javascript - 将 Redux useDispatch hook 中的“dispatch”函数作为 prop 传递给子组件
- python - 为什么我偶尔会收到 NoneType 错误?
- php - 使用 proc_open 流式运行运行时生成的 gzip 文件
- python - python 3对象中的错误消息没有属性'min_data'
- python - CSV 数据源不支持 pyspark 中的空数据类型