Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 考拉的反应时间。20秒等待响应_Ruby On Rails_Ruby_Facebook_Facebook Graph Api_Koala - Fatal编程技术网

Ruby on rails 考拉的反应时间。20秒等待响应

Ruby on rails 考拉的反应时间。20秒等待响应,ruby-on-rails,ruby,facebook,facebook-graph-api,koala,Ruby On Rails,Ruby,Facebook,Facebook Graph Api,Koala,我是新来的Rubyonrails和koalagem,我肯定我做错了什么。我一直在将代码调优为minimun表达式,但问题仍然存在。然后,我尝试在没有考拉宝石的情况下也这样做,但问题依然存在 代码如下: require 'koala' require 'open-uri' puts Time.now @graph = Koala::Facebook::API.new resp = @graph.graph_call("cocacola", {}, "get", {}) puts resp

我是新来的
Rubyonrails
koalagem
,我肯定我做错了什么。我一直在将代码调优为minimun表达式,但问题仍然存在。然后,我尝试在没有考拉宝石的情况下也这样做,但问题依然存在

代码如下:

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
我总是要等21秒Facebook的回复。如果我在我的浏览器上安装了,响应是即时的?是不是不一样


谢谢

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

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

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

我在谷歌上找到了解决方案:

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


现在它工作得很好

谢谢你的回复。在我的原始代码中,我在facebook应用程序中使用了一个访问令牌,我的响应速度很慢。我把这个代码放在最小的行上。无论如何,如果您将相同的url()直接放在web浏览器中,而没有登录,则响应会立即生效。在我的代码中,当我尝试最后四行(不使用考拉)时,应该是相同的。但我得等21秒才能解决这个问题。如果在“open”调用和JSON.parse调用之后放置更多的时间.now()调用,会发生什么?哪一个在浪费时间?如果开放调用占用了时间,那么您可以确切地看到Wireshark或TCPdump发生了什么。有20秒的超时,我经常看到DNS查找是原因。可能是配置错误的主服务器最终超时,允许使用辅助服务器,但转储数据包将确定无疑。使用graph explorer是否会获得相同的延迟?你可以对它设置一个限制——有些请求需要一堆数据,而这确实会在Facebook服务器上大量反弹,这需要时间。查询越具体,响应时间就越好。但这将是图形浏览器的时间,而不是考拉。考拉真的没有任何开销超过了获得Facebook的图形调用所需的时间。
group :development do
    require 'resolv'
    require 'resolv-replace'
end