Лучшая клиентская библиотека HTTP для Ruby - Typhoeus , ее можно использовать для параллельного выполнения нескольких HTTP-запросов неблокирующим образом.Существует блокирующий и неблокирующий интерфейс:
# blocking
response = Typhoeus::Request.get("http://stackoverflow.com/")
puts response.body
# non-blocking
request1 = Typhoeus::Request.new("http://stackoverflow.com/")
request1.on_complete do |response|
puts response.body
end
request2 = Typhoeus::Request.new("http://stackoverflow.com/questions")
request2.on_complete do |response|
puts response.body
end
hydra = Typhoeus::Hydra.new
hydra.queue(request1)
hydra.queue(request2)
hydra.run # this call is blocking, though
Другой вариант - em-http-request , который выполняется поверх EventMachine.Он имеет полностью неблокирующий интерфейс:
EventMachine.run do
request = EventMachine::HttpRequest.new('http://stackoverflow.com/').get
request.callback do
puts request.response
EventMachine.stop
end
end
Также имеется интерфейс для параллельного выполнения многих запросов, аналогично Typhoeus Hydra.
Недостатком em-http-request являетсяэто связано с EventMachine.EventMachine сам по себе является потрясающей платформой, но это сделка «все или ничего».Вам нужно написать все приложение в стиле выравнивания / прохождения продолжения, и это, как известно, вызывает повреждение мозга.Typhoeus гораздо лучше подходит для приложений, которые еще не выровнены.