我在控制器中有一个类似于:
的动作def action1
uri = URI("https://exmaple.com/api")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
// request spent time about > 60s
res = http.request(request)
render json: res
end
当我呼吁上述行动时。它总是响应状态504(超时)。 我希望在没有错误504的情况下获得JSON响应。 有人可以给我一个解决这个问题的方法吗?我不想在配置中在产品环境中设置超时。
答案 0 :(得分:0)
作为第3方请求,始终需要> 60 sec
。
所以我更喜欢在后台作业中移动此代码然后缓存它。 每次我从缓存发送响应而不是进行API调用。 另外,安排作业以便经常更新缓存。
要指定超时,您可以尝试这样的事情:
Net::HTTP.start(url.host, url.port, :read_timeout => 500) {|http| http.request(request)}