在超时时从rails控制器返回,同时等待并处理来自控制器中调用的webservice的响应

时间:2012-08-29 21:56:48

标签: ruby-on-rails soap http-post

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响应失败。我需要的是一种控制器将失败状态返回给webservice客户端(对于datanoise / RoR服务器)的方法,同时我们继续等待外部web服务的更长读取超时,有时需要3分钟才能响应。该响应需要处理并存储在数据库中(在mysql中简单更新一列)。

关于如何实现这一目标的任何想法?我在RHEL5上使用Rails 2.3.5,Ruby 1.8.7。

0 个答案:

没有答案