在睡眠延迟时执行n次循环

时间:2018-02-09 03:22:41

标签: ruby-on-rails ruby

我正在调用的API的速率限制为每分钟200个请求。我有~1,500(对话)线程我试图最初拉,所以试图循环遍历150次然后睡了90秒。

此循环用于创建CSV文件:

conversations.each do |conversation|
    customer = conversation.customer
    threaded_conversation = helpscout.conversation(conversation.id)
    sleep(0.4)
end

我尝试使用times,但我觉得有一个更好的解决方案,我不知道。

150.times do
   # above loop
end 

1 个答案:

答案 0 :(得分:1)

您可以跟踪迭代计数,然后如果它是150的倍数则休眠:

conversations.each.with_index do |conversation, index|
    customer = conversation.customer
    threaded_conversation = helpscout.conversation(conversation.id)
    if index % 150 == 0
      sleep 90
    end
end