Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 以睡眠延迟执行循环n次_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 以睡眠延迟执行循环n次

Ruby on rails 以睡眠延迟执行循环n次,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在调用的API的速率限制为每分钟200个请求。我有大约1500个(对话)线程,我正在尝试最初拉,因此尝试在循环中迭代150次,然后休眠90秒 此循环用于创建CSV文件: conversations.each do |conversation| customer = conversation.customer threaded_conversation = helpscout.conversation(conversation.id) sleep(0.4) end 我

我正在调用的API的速率限制为每分钟200个请求。我有大约1500个(对话)线程,我正在尝试最初拉,因此尝试在循环中迭代150次,然后休眠90秒

此循环用于创建CSV文件:

conversations.each do |conversation|
    customer = conversation.customer
    threaded_conversation = helpscout.conversation(conversation.id)
    sleep(0.4)
end
我试过使用
,但我觉得有一个更好的解决方案,我不知道

150.times do
   # above loop
end 

您可以跟踪迭代次数,如果是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

你为什么会有这种感觉?如果你有一个特定的迭代次数,
就是正确的选择。“尝试在循环中迭代150次”——你可能不想把所有1500个线程都拉150次,那么这意味着什么呢?您想处理150个项目的批处理还是10个项目(1500/150)?“每分钟200个请求的速率限制”-为什么您想在150次迭代后休眠90秒,而不是每200次迭代休眠60秒?什么是
sleep(0.4)
?@Stefan,以防实际支持票证也被计入该限制,并防止有人在我提取结果时提交内容。