我通過使用RestClient庫的應用程序獲取Google API請求以獲取地址。使用Net :: HTTP的API請求生產速度很慢
樣品請求代碼 -
require 'rest-client'
require 'json'
gmaps_api_href = "https://maps.googleapis.com/maps/api/geocode/json?latlng=18.56227673,73.76804232&language=ar"
response = RestClient.get gmaps_api_href
result = JSON.parse(response)['results']
這個請求工作得很好我的本地計算機上,它1-2secs內完成。但在生產實例中,需要20秒才能完成一個請求。
由於一些安全措施,我們無法直接訪問生產實例。所以我無法找到這個延遲的關鍵點。 做試驗和錯誤後,我們發現,
- 如果我們要求使用curl,需要1秒的服務器
- 如果我們使用的Net :: HTTP請求做,它需要20秒才能完成一樣,我們觀察RestClient。
- 如果我們在小的.net應用程序中使用WebRequest發出請求,該請求將在1秒內完成。
我很難得到上述觀察的區別。
請讓我知道爲什麼是這樣?以及我必須做些什麼才能使其在我的Rails應用程序中工作?
相關問題,建議,我認爲可能是您的服務器上的DNS問題:http://stackoverflow.com/questions/29945204/nethttp-extremely-slow-responses-for-https-requests http://stackoverflow.com/questions/9939726/ruby-net-http-opening-connection-very-slow –
感謝喬丹!爲什麼WebRequest在服務器上正常工作還有一件事?有什麼區別嗎? – kd12
Ruby的Net :: HTTP和.NET的WebRequest之間確實存在差異,就像Net :: HTTP和cURL之間的差異一樣。但是,這些差異是什麼,我不能說。 –