【问题标题】:koala response times. 20 seconds waiting response考拉响应时间。 20秒等待响应
【发布时间】:2012-11-08 09:14:07
【问题描述】:

我是 RubyonrailsKoala 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


【解决方案1】:

我在我的应用程序中使用考拉,但没有这样的经验。唯一的区别是我不匿名使用它。相反,我创建了一个应用程序,并使用访问令牌来访问 Facebook API。这可能是根本原因,因为我发现 this post 似乎也相关。

【讨论】:

  • 感谢您的回复。在我的原始代码中,我将访问令牌与 facebook 应用程序一起使用,但我的响应速度很慢。我已经把这段代码最小化了。无论如何,如果您直接在 Web 浏览器中输入相同的 url (graph.facebook.com/Ferrari),而无需登录,则响应是即时的。在我的代码中,当我尝试最后四行(不使用考拉)时,应该是相同的。但我必须等待 21 秒
【解决方案2】:

最后,这是一个 DNS 问题(感谢 jpgeek)。

当我向任何网站发出 GET 请求时,响应是在 21 秒后,但使用同一网站的 IP,响应是瞬时的。

我在谷歌上找到了解决方案:http://www.mikeperham.com/2010/02/10/asynchronous-dns-resolution/

我在 Gemfile 中使用过这个个人解决方案(我不确定它是否是最好的):

group :development do
    require 'resolv'
    require 'resolv-replace'
end

现在一切正常!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 2017-01-03
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多