aca*_*vid 8 ruby-on-rails heroku
我正在构建一个Ruby on Rails应用程序,可以访问大约6-7个API,根据用户的输入从中获取信息,比较并向用户显示结果(信息不保存在数据库中).我将使用Heroku来部署应用程序.我希望那些HTTP请求能够并行完成访问API,因此答案时间更好,而不是顺序完成.您认为在Heroku中实现这一目标的最佳方法是什么?
非常感谢您的任何建议!
如果你想在服务器端实际执行请求(tfe的javascript解决方案是一个好主意),你最好的选择是使用EventMachine.使用EventMachine提供了一种执行非阻塞IO的简单方法.
另请查看EM-Synchrony以获取一组Ruby 1.9光纤感知客户端(包括HTTP).
您需要为非阻塞HTTP请求执行的操作如下:
require "em-synchrony"
require "em-synchrony/em-http"
EM.synchrony do
concurrency = 2
urls = ['http://url.1.com', 'http://url2.com']
# iterator will execute async blocks until completion, .each, .inject also work!
results = EM::Synchrony::Iterator.new(urls, concurrency).map do |url, iter|
# fire async requests, on completion advance the iterator
http = EventMachine::HttpRequest.new(url).aget
http.callback { iter.return(http) }
http.errback { iter.return(http) }
end
p results # all completed requests
EventMachine.stop
end
Run Code Online (Sandbox Code Playgroud)
祝好运!