打开网址是超时::错误

时间:2013-01-23 22:38:36

标签: ruby-on-rails ruby json url

  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

1 个答案:

答案 0 :(得分:0)

一秒钟是乐观的。

当我编写蜘蛛时,我会创建一个重试队列,其中包含子数组或对象,其中包含先前尝试的重试次数,URL以及最后一个超时值。使用递增超时值,第一次尝试一秒,第二次尝试两秒,四,八,十六等,直到我确定该站点不会响应。