我想在我的视图中获得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
有解决方案吗?如果不是,是什么让它表现得像这样?
答案 0 :(得分:0)
WEBrick - Rails默认的内置服务器是一个单线程服务器。 Wiki。 您进行一次调用并在第一个请求的逻辑内进行另一次调用。第二个请求永远不会执行,直到第一个请求完成。
我想,heroku实例可以正常运行 - 它是多线程的。但我建议改变你的代码。例如,您可以将单独的服务转换为rails引擎。