【发布时间】:2016-01-19 06:32:45
【问题描述】:
我正在使用 RestClient 库通过应用程序发出 Google 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-2 秒内完成。但在生产实例上,完成一个请求需要 20 秒。
由于一些安全措施,我们不能直接访问生产实例。所以我无法找到这种延迟的精确点。 经过反复试验,我们发现
- 如果我们使用 CURL 发出请求,服务器上需要 1 秒
- 如果我们使用 Net::HTTP 发出请求,则需要 20 秒才能完成与我们观察到的 RestClient 相同。
- 如果我们在小型 .net 应用中使用 WebRequest 发出请求,该请求会在 1 秒内完成。
我很难区分上述观察结果。
请告诉我为什么会这样?以及我必须做哪些更改才能使其在我的 Rails 应用程序中运行?
【问题讨论】:
-
相关问题提示我可能是您服务器上的 DNS 问题:stackoverflow.com/questions/29945204/…stackoverflow.com/questions/9939726/…
-
谢谢乔丹!! WebRequest 在服务器上运行良好的另一件事是什么?有什么区别吗?
-
Ruby 的 Net::HTTP 和 .NET 的 WebRequest 之间肯定存在差异,正如 Net::HTTP 和 cURL 之间存在差异一样。但是,我不能说这些差异是什么。
-
我做了相应的更改,但没有输出:-(。它仍然需要 20 秒..
标签: ruby-on-rails ruby ruby-on-rails-4 rubygems