Ruby on rails Rails-非阻塞HTTP请求?

Ruby on rails Rails-非阻塞HTTP请求?,ruby-on-rails,http,Ruby On Rails,Http,我想展示一些通过Ajax加载的Amazon产品 我使用Ajax调用下面的方法,但请求需要几秒钟 @items = [] @shows.shuffle.first(5).each do |show| req = AmazonProduct["us"] req.configure do |c| c.key = "###" c.secret = "###" c.tag = "###" end req << { :opera

我想展示一些通过Ajax加载的Amazon产品

我使用Ajax调用下面的方法,但请求需要几秒钟

@items = []
@shows.shuffle.first(5).each do |show|
    req = AmazonProduct["us"]
    req.configure do |c|
      c.key = "###"
      c.secret = "###"
      c.tag = "###"
    end
    req << { :operation => 'ItemSearch',
             :search_index => params[:product_type],
             :response_group => %w{ItemAttributes Images},
             :keywords => show.name,
             :sort => "" }
    resp = req.get
    @items << resp.find('Item').shuffle.first
end
@items=[]
@表演。洗牌。第一(5)。每个表演|
req=亚马逊产品[“美国”]
要求配置do | c|
c、 key=“####”
c、 secret=“####”
c、 tag=“####”
结束
请求'ItemSearch',
:search_index=>params[:product_type],
:response_group=>%w{itemtattributes Images},
:keywords=>show.name,
:sort=>“”
resp=req.get
@项目编辑:

澄清一下,这取决于您在开发环境中使用的服务器,而不是rails

WebRick(dev中的默认http服务器)一次只能处理一个请求。部署应用程序时,应该使用puma、unicorn、Phusion Passenger或任何其他具有多个进程(或线程)处理请求的服务器

旧答案:

我认为这在rails中是不可能的

我解决这个问题的方法是创建一个简单的应用程序,它只有从amazon获取所需产品的操作

要能够向此应用发送ajax请求,您需要将此应用指向您的域(子域)

目前,我看不到任何其他解决方案。当然,您的服务器上可以有多个应用程序进程,但这不会长期解决您的问题

总结一下:

AJAX -> amazon-producs-sinatra-app.yourdomain.com 

我怀疑这是因为您正在开发模式下使用默认的Rails服务器Webrick进行测试

我的理解是webrick一次只能处理一个请求(这就是为什么不建议将其用于生产)

生产级Rails服务器(如Phusion Passenger)或混合/精简服务器集群将为您提供并发性:)