【发布时间】:2012-11-08 09:14:07
【问题描述】:
我是 Rubyonrails 和 Koala gem 的新手,我确定我做错了什么。我一直在将我的代码调整为最小表达式,但问题仍然存在。然后我尝试在没有 koala gem 的情况下做同样的事情,但问题仍然存在。
这是代码:
require 'koala'
require 'open-uri'
puts Time.now
@graph = Koala::Facebook::API.new
resp = @graph.graph_call("cocacola", {}, "get", {})
puts resp
puts Time.now
coke_url = "https://graph.facebook.com/cocacola"
response = open coke_url
response = JSON.parse response.read
puts response.inspect
puts Time.now
我必须等待 Facebook 的响应总是 21 秒。如果我将https://graph.facebook.com/cocacola 放在我的浏览器上,响应是即时的¿不一样?
谢谢
【问题讨论】:
-
有趣的问题。如果在 'open' 调用和 JSON.parse 调用之后放置更多 Time.now() 调用会发生什么?哪一个在花时间?如果开放调用需要时间,您可以确切地看到 Wireshark 或 TCPdump 发生了什么。由于 20 秒超时,我经常看到 DNS 查找是原因。也许一个配置错误的主服务器最终超时允许辅助服务器,但转储数据包肯定会告诉我们。
-
您使用图形资源管理器是否得到相同的延迟?您可以对其设置限制 - 一些请求是针对大量数据的,并且确实会在 Facebook 服务器周围反弹很多,这需要时间。查询越具体,响应时间就越好。但这将是 Graph Explorer 的时间,而不是 Koala。 Koala 在获取 Facebook 的 Graph 调用所需的时间之外确实没有任何开销。
标签: ruby-on-rails ruby facebook facebook-graph-api koala