HTTPClient :: ConnectTimeoutError lors de l’utilisation de la gem ‘fb_graph’

J’ai un projet de rails et deux machinges. L’un fonctionne sous Ubuntu 10.04 et l’autre 12.04 bêta. J’utilise le gem ‘fb_graph’ sur la machine 10.04 tout fonctionne bien, mais quand je le fais sur la machine 12.04

me = FbGraph :: User.me (jeton) .fetch

Je reçois

HTTPClient::ConnectTimeoutError: execution expired from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient/session.rb:300:in `connect' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient/session.rb:300:in `ssl_connect' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient/session.rb:739:in `block in connect' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient/session.rb:731:in `connect' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient/session.rb:594:in `query' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient/session.rb:161:in `query' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient.rb:1060:in `do_get_block' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient.rb:869:in `block in do_request' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient.rb:956:in `protect_keep_alive_disconnected' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient.rb:868:in `do_request' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient.rb:756:in `request' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/httpclient-2.2.4/lib/httpclient.rb:661:in `get' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:49:in `block in get' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:122:in `handle_response' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:48:in `get' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/fb_graph-2.4.10/lib/fb_graph/node.rb:18:in `fetch' from (irb):10 from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/railties-3.2.0/lib/rails/commands/console.rb:47:in `start' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/railties-3.2.0/lib/rails/commands/console.rb:8:in `start' from /home/jan/.rvm/gems/ruby-1.9.2-p290@ece/gems/railties-3.2.0/lib/rails/commands.rb:41:in `' from script/rails:6:in `require' from script/rails:6:in `' 

Je ne sais pas pourquoi cela se produit ni comment je pourrais le résoudre. Des idées? Merci!

Jan

Les raisons pour lesquelles cela pourrait se produire sont les performances matérielles de la machine et les performances du réseau.

Essayez encore une fois. Parfois, le réseau a besoin de temps pour charger les informations de routage, mais une fois qu’il est chargé, il accélère les temps suivants. Ce n’est peut-être pas une bonne solution de production, mais elle pourrait diagnostiquer si le problème est en train de rafraîchir le routage du réseau.

Cela pourrait être un véritable problème de performances réseau. Cela ne vous aidera peut-être pas si vous ne pouvez pas régler votre réseau.

Si vous réessayez d’aider, vous pouvez placer une boucle de réessai autour de votre code.

 (0..2).each do begin ... #your code goes here break rescue HTTPClient::ConnectTimeoutError end end 

La requête HTTP expire entre le serveur et FB. Consultez ce problème de github pour savoir comment configurer l’option de délai d’attente du client HTTP.