通过控制器的操作转到同一rails应用程序中的链接不起作用

时间:2017-02-16 10:53:29

标签: ruby-on-rails httprequest httpresponse

我想在我的视图中获得Web服务的结果(位于同一个应用程序中),所以我在行动中获取它,如:

class MerchantsController < ApplicationController
  def list
    @cuisines = HTTParty.get('http://localhost:3000/v1/cuisines')
  end
end

点击此操作为:http://localhost:3000/merchants/list,加载时间过长,最终会产生Net::ReadTimeout例外。

我有相同的应用程序部署到heroku所以当我指向该实例时,它工作正常:

class MerchantsController < ApplicationController
  def list
    @cuisines = HTTParty.get('http://bogoapi.herokuapp.com/v1/cuisines')
  end
end

有解决方案吗?如果不是,是什么让它表现得像这样?

1 个答案:

答案 0 :(得分:0)

WEBrick - Rails默认的内置服务器是一个单线程服务器。 Wiki。  您进行一次调用并在第一个请求的逻辑内进行另一次调用。第二个请求永远不会执行,直到第一个请求完成。

我想,heroku实例可以正常运行 - 它是多线程的。但我建议改变你的代码。例如,您可以将单独的服务转换为rails引擎。