0

URL のリストの応答コードをチェックして返すコードが少しあります - アプリケーションがまったくロードされないハングしているいくつかの URL に問題があります。30 秒後にあきらめて、スキップされた URL を失敗としてマークする次の URL を確認するように要求するにはどうすればよいですか。

以下は私の現在のコードです。(モデル/status.rb)

 require "net/http"
 require "uri"

 class Status
def initialize(url)
    @url = url
end

def get_status
    response.code
end

def active?
    ["200","203","302"].include?(get_status) ? true : false
end

private

def lookup
    URI.parse(@url)
end
def http
    Net::HTTP.new(lookup.host, lookup.port)
end
def request
    Net::HTTP::Get.new(lookup.request_uri)
end
def response
    http.request(request)
end
end

(コントローラー/welcome_controller.rb)

class WelcomeController < ApplicationController
def index
@syndication = [
["http://v1.syndication.u01.example.uk/organisations?apikey=bbccdd", "U.INT 01"],
["http://v1.syndication.u02.example.uk/organisations?apikey=bbccdd", "U.INT 02"],


].collect { |url| logger.info("Boom #{url[0]}"); ["#{url[1]} (#{url[0]})", Status.new(url[0]).active?] }

 end

 end
4

1 に答える 1

0

答えが出ました..

以下を「def get_status」に追加します

def get_status 
    begin 
        response.code
    rescue Exception => e
        Rails.logger.info("Error #{e}")
    end
end

これによりエラーがログに記録され、次の URL に移動しました

于 2013-09-23T10:51:22.377 に答える