我正在寻找一个备用的Ruby HTTP库,它可以同时进行多个HTTP调用,并且比核心的Net :: HTTP库表现更好。
答案 0 :(得分:3)
答案 1 :(得分:3)
为什么需要网络库处理并行性?这正是线程的用途。
require "open-uri"
fetcher = lambda do |uri|
puts "Started fetching #{uri}"
puts open(uri).read
puts "Stopped fetching #{uri}"
end
thread1 = Thread.new("http://localhost:9292", &fetcher)
thread2 = Thread.new("http://localhost:9293", &fetcher)
thread1.join
thread2.join
另外,我不明白“表现更好”是什么意思。核心库通常足以成为核心库。你对Net :: HTTP有什么问题吗?
答案 2 :(得分:1)
您可以使用Parallel gem,它应该适用于任何Ruby HTTP库。
答案 3 :(得分:0)
不确定它是否比Typhoeus表现更好,但你可以使用Eventmacheine + em-http-request。有一个发送多个请求的例子。
require 'eventmachine'
require 'em-http'
EventMachine.run {
multi = EventMachine::MultiRequest.new
reqs = [
'http://google.com/',
'http://google.ca:81/'
]
reqs.each_with_index do |url, idx|
http = EventMachine::HttpRequest.new(url, :connect_timeout => 1)
req = http.get
multi.add idx, req
end
multi.callback do
p multi.responses[:callback].size
p multi.responses[:errback].size
EventMachine.stop
end
}