我需要限制我的 API 请求。我的脚本中有一个循环,它从一个 csv 文件中提取 1000 个值并循环遍历每个值,每个值都是一个单独的 API 调用。例如,如果我想每分钟只进行 10 次 API 调用……我该怎么做?我在想这样的事情:
csv_array.each_slice(10) do |chunk|
chunk.each do |x|
make_api_call(x)
Delay.one_minute
end
end
是否有更好的选择来限制我的 API 请求,或者我是否正在按照上述想法行事?我正在使用 ruby 1.9.3。
最佳答案
我过去用过这样的东西:
SLEEP_WINDOW = 60 * 1 # minutes
csv_array.each_slice(10) do |chunk|
start_time = Time.now
chunk.each do |x|
make_api_call(x)
end
sleep_time = SLEEP_WINDOW - (Time.now - start_time)
sleep sleep_time if (sleep_time > 0)
end
假设可以快速通过 block ,然后任何剩余的延迟时间都会使代码进入休眠状态。如果 API 调用超过一分钟,代码将立即循环。
关于ruby - 延迟编写 Ruby 中每个 X 数组项的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18698975/