我正在构建一个Ruby on Rails应用程序,它可以访问大约6-7个app,根据用户的输入从其中获取信息,比较并向用户显示结果(这些信息不会保存在数据库中)。我将使用Heroku来部署应用程序。我希望那些访问API的HTTP请求是并行完成的,这样响应时间会更好,而不是顺序执行。你认为在Heroku中实现这一点的最好方法是什么?
非常感谢您的任何建议!
发布于 2011-08-17 12:11:24
如果您想在服务器端实际执行请求(tfe的javascript解决方案是一个好主意),那么最好的选择是使用EventMachine。使用EventMachine提供了一种执行非阻塞IO的简单方法。
也可以在EM-Synchrony上查看一组Ruby1.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
祝你好运!
发布于 2010-11-04 11:42:39
您始终可以使用Javascript在客户端发出请求。然后,您不仅可以并行运行它们,而且甚至不需要往返于您自己的服务器。
发布于 2010-11-12 16:55:32
我还没有尝试过这样的并行化请求。但我已经尝试过在heroku上进行并行操作,效果非常好!这是我关于它的一个简单的博客文章。
http://olemortenamundsen.wordpress.com/2010/10/17/spawning-multiple-threads-at-heroku-using-parallel/
https://stackoverflow.com/questions/4088849
复制相似问题