2012-11-08 2 views
2

나는 RubyonrailsKoala gem으로 새 소식을 들었고 나는 틀린 일을하고 있다고 확신한다. 내 코드를 minimun 표현식으로 조정했지만 문제는 지속됩니다. 그렇다면 나는 코알라 보석없이 똑같이하려고 노력했지만 문제는 계속되었다.코알라 응답 시간. 응답 대기 20 초

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초에게 항상 페이스 북의 응답을 기다릴 필요가 :

는 코드입니다. 내 브라우저에 https://graph.facebook.com/cocacola을 넣으면 즉각적으로 응답이 ¿ 같지 않습니까?

감사

+0

흥미로운 문제. 'open'호출과 JSON.parse 호출 후에 더 많은 Time.now() 호출을 넣으면 어떻게됩니까? 어느 쪽이 시간을 내고 있습니까? 열린 통화에 시간이 걸리면 Wireshark 또는 TCP 덤프로 어떤 일이 일어나는지 정확히 알 수 있습니다. 20 초의 시간 초과로 DNS 조회가 원인으로 자주 보았습니다. 어쩌면 부적절한 주 서버로 인해 보조 서버를 허용 할 수 있지만 패킷을 덤프하면 확실히 알 수 있습니다. – jpgeek

+0

그래프 탐색기를 사용하여 동일한 지연이 발생합니까? 몇 가지 요청은 데이터 묶음에 대한 것이므로 페이스 북 서버에 많은 시간이 걸릴 수 있습니다. 쿼리가 구체적 일수록 응답 시간이 향상됩니다. 그러나 이것은 코알라가 아니라 그래프 익스플로러에서 시간이 될 것입니다. 코알라는 페이스 북의 그래프 호출을 얻는 데 걸리는 시간을 넘어서는 오버 헤드가 없습니다. –

답변

1

내 응용 프로그램에서 코알라를 사용하고 있는데 같은 경험을하지 않았다. 유일한 차이점은 익명으로 사용하지 않는다는 것입니다. 대신 앱을 만들었고 Facebook 토큰에 액세스하기 위해 액세스 토큰을 사용하고 있습니다. 이것은 근본 원인이 될 수도 있습니다. 나는 this post도 관련되어있는 것으로 나타났습니다.

+0

답변 해 주셔서 감사합니다. 내 원래 코드에서 페이스 북 응용 프로그램과 함께 액세스 토큰을 사용하고 있는데 느린 응답이있었습니다. 줄을 최소화하기 위해이 코드를 넣었습니다. 어쨌든 로그인하지 않고 동일한 URL (https://graph.facebook.com/Ferrari)을 웹 브라우저에 직접 입력하면 응답이 즉시 발생합니다. 내 코드에서, 내가 코알라를 사용하지 않는 마지막 4 줄을 시도 할 때, 아마 같을 것이다. 하지만 21 초를 기다려야 해. –

1

마지막으로 DNS 문제였습니다 (감사 jpgeek).

웹 사이트에 대한 GET 요청을 처리했을 때 응답은 21 초가 지나서야 동일한 웹 사이트의 IP를 사용하여 즉각적으로 응답했습니다.

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

것은 지금은 잘 작동 것 : 나는 Gemfile이 개인 솔루션을 (나는 그것이 최선의 방법 있는지 확실하지 않습니다) 사용이 http://www.mikeperham.com/2010/02/10/asynchronous-dns-resolution/

:

나는 구글에 해결책을 발견!