0
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url.path)
request.content_type p= 'text/xml'
request.body = websvcRQ.result(binding).gsub("\n","")
# need to set the read timeout for http POST
response= http.request(request)
# return from controller after some timeout, but keep waiting for the response (could be 3 mins)

我在 begin-catch 中执行上述操作,但在超时时直接在控制器中返回 POST 响应失败。我需要的是控制器向 web 服务客户端(对于 datanoise/RoR 服务器)返回故障状态的方法,同时我们继续等待,直到外部 web 服务的读取超时时间更长,有时需要 3 分钟才能响应。该响应需要处理并存储在数据库中(简单地更新 mysql 中的一列)。

关于如何做到这一点的任何想法?我在 RHEL5 上使用 Rails 2.3.5、Ruby 1.8.7。

4

0 回答 0