2017-08-14 70 views
0

我有以下代碼塊,使用ruby 2.3.0和net:http,如何包含超時以便服務器可以使用超過60幾秒鐘來回應?我在與包括在體內的陣列太具體的挑戰,當我使用類似HttParty如何在ruby 2.3.0中使用無限read_timeout發出POST請求

require 'uri' 
require 'net/http' 
require 'open-uri' 

url = URI.parse('http://local-tomcat.com:8080/local-api/v1/anobject/create') 
post_params = {"queryToken"=>"4b58f48b-5197-4c86-8783-e15096fe3a6f", 
      "tenantId"=>"99218d0e-1757-4fd7-a7c1-5642adcb57e3", 
      "projectId"=>"4885536d-06a8-41ed-8002-1619966b14e2", 
      "destinations"=>["2cc1053b-20fd-4191-b3f4-219a9099ad63|4885536d-06a8-41ed-8002-1619966b14e2|99218d0e-1757-4fd7-a7c1-5642adcb57e3|5ceabd11-a2b1-4c8e-89b2-c0d75a7d7f8e","515104a7-e4ae-4905-893c-835500f0f962|4885536d-06a8-41ed-8002-1619966b14e2|99218d0e-1757-4fd7-a7c1-5642adcb57e3|5ceabd11-a2b1-4c8e-89b2-c0d75a7d7f8e"], 
      "firstExecution"=>true} 
response = Net::HTTP.post_form(url, post_params) 
puts response.body 

回答

0

沒關係,想通了:

Net::HTTP.start(url.host, url.port, read_timeout: 999_999) do |http| 
    request = Net::HTTP::Post.new(url) 
    request.body = URI.encode_www_form(post_params) 
    response = http.request request 
end 
+0

我不認爲這是一個很好的的方法,因爲你保持服務器繁忙..理想情況下,服務器應該接受請求,做一個後臺工作,併發送推送通知或寫入一個地方,在那裏你可以稍後閱讀 – gates