uniqUsers = User.find(params[:userid]).events.where("comingfrom != ''").uniq_by {|obj| obj.comingfrom}
uniqUsers.map do |elem|
begin
@tag = nil
open('http://localhost:3000/search_dbs/show?userid='+ params[:userid] + '&fromnumber=' + elem.comingfrom + '&format=json', 'r', :read_timeout=>1) do |http|
@tag = http.read
end
rescue Exception => e
puts "failes"
puts e
end
end
嗨,这让我发疯,因为某些原因open url命令没时间错误而没有错误。当我在chrome中尝试相同的url时,一切都像魅力一样,当我从代码中执行此操作时,我得到Timeout :: Error
答案 0 :(得分:0)
一秒钟是乐观的。
当我编写蜘蛛时,我会创建一个重试队列,其中包含子数组或对象,其中包含先前尝试的重试次数,URL以及最后一个超时值。使用递增超时值,第一次尝试一秒,第二次尝试两秒,四,八,十六等,直到我确定该站点不会响应。