无论如何,在rails上使用NET :: HTTP来增加超时

时间:2017-10-02 07:11:23

标签: ruby-on-rails timeout net-http

我使用来自NET的HTTP:HTTP使用rails的form_post方法对第三方支付API进行NET:HTTP调用。

res = Net::HTTP.post_form(uri, payment_details)
logger.info "RESPONSE: #{res}"
descrypted_res = JSON.parse(res.body)
logger.info "RESPONSE: #{descrypted_res}"

有时候,我得到了回复说HTTPOK的回复,有时我根本得不到任何东西。我怀疑付款服务器没有及时响应我的请求,并且连接已终止。我的问题是,有没有办法增加post_form超时持续时间? 我想把它增加到60秒。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以调整ruby方法: https://docs.ruby-lang.org/en/2.0.0/Net/HTTP.html#method-c-post_form

像这样:

def _post_form(url, params)
  req = Net::HTTP::Post.new(url)
  req.form_data = params
  req.basic_auth url.user, url.password if url.user
  Net::HTTP.start(
    url.hostname,
    url.port,
    use_ssl: url.scheme == 'https',
    read_timeout: 600
  ) do |http|
    http.request(req)
  end
end