2

API リクエストを調整する必要があります。私のスクリプト内には、csv ファイルから 1000 個の値を取得してそれぞれをループするループがあり、各値は個別の API 呼び出しです。たとえば、1 分間に 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 を使用しています。

4

2 に答える 2

0

スレッドを使用して、次の呼び出しが行われる前に正しい間隔が経過したことを確認できます。これは、csv 配列の各メンバーの呼び出しにスペースを空けます。

csv_array.each do |x|
  timer = Thread.new { sleep 6 }
  execution = Thread.new { make_api_call(x) }
  [timer, execution].each(&:join)
end

ここでの利点は、少なくとも 6 秒が経過することを保証することですが、応答がたまたまそれよりも長くかかる場合、タイマーは既に期限切れになっており、次の要求をすぐに開始できます。

于 2013-09-09T16:33:44.953 に答える