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 サーバー用) に返す方法です。その間、応答に 3 分かかる場合がある外部 Web サービスの読み取りタイムアウトが長くなるまで待機し続けます。その応答を処理してデータベースに保存する必要があります (mysql の 1 つの列を単純に更新します)。
これを達成する方法についてのアイデアはありますか? RHEL5 で Rails 2.3.5、Ruby 1.8.7 を使用しています。