多个HTTP请求 - Rails

时间:2010-05-19 13:55:45

标签: ruby-on-rails curl curl-multi

我的应用程序会检查多个域以查看它们是否有效(大约100个)。我有以下代码来检查单个域:

def self.test_url uri, limit = 10
    if limit == 0 
        return get_error_messages("001")
    end
    begin 
        url = URI.parse(uri)
        response = Net::HTTP.start(url.host, url.port).request_head('/')  
    rescue SocketError => e 
        return get_error_messages("002")
    end
    case response
        when Net::HTTPRedirection then test_url(response['location'], limit - 1)
        else return get_error_messages(response.code)
    end
end

代码在考虑重定向时检查响应代码。这很好用。我唯一的问题是当我把它放在一个循环中时我希望它并行运行。因此,在我可以请求域2之前,我不必等待域1做出响应。

我使用curl_multi在PHP中对此进行了管理,以并行运行请求。我在Rails中可以做类似的事情吗?

1 个答案:

答案 0 :(得分:1)

一个建议是将您的域列表分成两个或多个数组部分

然后为每个线程启动不同的线程

T1 = Thread.new {func1的()} T2 = Thread.new {func1的()} t1.join t2.join

http://www.tutorialspoint.com/ruby/ruby_multithreading.htm

这是模拟的并行性,我不明白为什么它不会比b4更快