Comme te le dis l'erreur, c'est un timeout. Apparemment, ton application a
mis trop de temps à faire quelque chose, apparemment à tenter d'ouvrir l'uri
de ta cible je dirais (sans certitude). Si c'est le cas, ca peut se produire
quand :

   - le serveur où tu cherche à piocher le flux RSS est en panne
   - le serveur met trops de temps à répondre
   - le serveur blacklist tes requêtes
   - et j'en oublie

Vu que tu n'as pas le problème en ligne de commande, je me hasarderai à
penser que ton serveur (à toi) surveille le temps d'exécution des requêtes
qui lui sont soumises et kicke les requêtes qui s'éternisent (tout en
restant plus tolérant pour les manipulations console par exemple). Comme tu
es tributaire du temps de chargement de cette ressource externe, c'est
probablement parce que le serveur distant met trops de temps à répondre.

Le 8 octobre 2008 15:23, Céd B. <[EMAIL PROTECTED]> a écrit :

>
> Bonjour,
>
> Je voudrais récupérer des flux RSS à partir d'un URL. Après quelques
> recherches sur Internet, je suis tombé sur une librairie très simple que
> voici :
>
> # lib/rss_parser.rb
>
> class RssParser
>  require 'rexml/document'
>  require 'open-uri'
>  def self.run(url)
>    xml = REXML::Document.new(open(url))
>    data = {
>      :title    => xml.root.elements['channel/title'].text,
>      :home_url => xml.root.elements['channel/link'].text,
>      :rss_url  => url,
>      :items    => []
>    }
>    xml.elements.each '//item' do |item|
>      new_items = {} and item.elements.each do |e|
>        new_items[e.name.gsub(/^dc:(\w)/,"\1").to_sym] = e.text
>      end
>      data[:items] << new_items
>    end
>    data
>  end
> end
>
> En console, tout fonctionne, mais lorsque je l'utilise dans mon
> application, j'ai une erreur Timeout::Error :
>
> Timeout::Error (execution expired):
>    /usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill'
>    /usr/lib/ruby/1.8/timeout.rb:56:in `timeout'
>    /usr/lib/ruby/1.8/timeout.rb:76:in `timeout'
>    /usr/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
>    /usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
>    /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline'
>    /usr/lib/ruby/1.8/net/http.rb:2020:in `read_status_line'
>    /usr/lib/ruby/1.8/net/http.rb:2009:in `read_new'
>    /usr/lib/ruby/1.8/net/http.rb:1050:in `request'
>    /usr/lib/ruby/1.8/open-uri.rb:248:in `open_http'
>    /usr/lib/ruby/1.8/net/http.rb:543:in `start'
>    /usr/lib/ruby/1.8/open-uri.rb:242:in `open_http'
>    /usr/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
>    /usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
>    /usr/lib/ruby/1.8/open-uri.rb:162:in `catch'
>    /usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
>    /usr/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
>    /usr/lib/ruby/1.8/open-uri.rb:518:in `open'
>    /usr/lib/ruby/1.8/open-uri.rb:30:in `open'
>    /lib/rss_parser.rb:7:in `run'
>    /app/controllers/pages_controller.rb:155:in `rss'
>    (...)
>
> Quelqu'un aurait-il une idée d'où cela pourrait-il venir?
>
> J'utilise Rails 2.1.0, et j'ai effectué des tests en environement de
> développement et de production.
>
> Merci
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>


-- 
Michel Belleville

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---

Répondre à