IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Net::HTTP bloque a la lecture du contenu


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut Net::HTTP bloque a la lecture du contenu
    Salut à tous,

    Voilà j'ai un petit problème lorsque j'essaye de récupérer un fichier en http avec le module Net::HTTP. En effet, la méthode read_entity_body se freeze régulièrement (j'imagine qu'elle a du mal à récupérer le contenu distant). J'ai cherché pas mal sur internet et sur le forum, mais je n'ai absolument rien trouvé sur le sujet (suis-je le seul à avoir jamais eu ce problème ?)...

    Pour résoudre le problème, j'ai essayé plein de tailles de tampon différentes ... j'ai également essayé d'utiliser Net::HTTP::NB (non bloquant) mais cela ne change rien... Sinon j'avais pensé mettre un timeout sur la fonction et réessayer en cas de dépassement du délai mais je n'ai pas trouvé comment le faire proprement (à part avec des threads mais bon, si je peux éviter...).


    Voici grosso-modo, l'extrait de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    my $s = Net::HTTP->new( Host => $self->{host} );
    my $encoded = encode_base64("$self->{user}:$self->{password}");
    $s->write_request( GET => $self->{url}, 'User-Agent' => "Mozilla/4.0 (Perl 5.8.9)", 'Authorization' => "Basic $encoded");
    my ( $code, $mess, %h ) = $s->read_response_headers();
    	while (1) {
    		my ($buf);
    		# téléchargement du xml
    		my $n = $s->read_entity_body( $buf, $self->{'buf_size'} );
     
    		# (...) 
    		# traitement
     
    		last unless $n;
    	}
    Merci d'avance à tous ceux qui m'aiderons à résoudre ce problème !

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    Personne n'as jamais eu ce problème ?
    Je n'ai peut-être pas été très clair... je vais essayer de détailler un peu ! En fait, dans ma boucle while, à chaque appel de la fonction read_entity_body (qui remplit le buffer), le temps nécessaire à l'exécution de cette fonction est extrêmement variable (alors que la source et la taille du buffer restent identiques).
    Dans la majorités des cas, cela ne dure que quelques ms (rien d'anormal) mais de temps en temps (impossible de dire quand exactement), l'appel à cette fonction met un temps pas possible à revenir (parfois plus d'une minute...).
    Donc voilà, si quelqu'un a une idée pour solutionner ce problème, ça m'aiderais beaucoup
    Merci d'avance !

  3. #3
    Membre éclairé Avatar de Vespasien
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 383
    Par défaut
    Tu ne veux pas tenter le coup avec WWW::Mechanizer?

    Il gère peut-être mieux les choses...
    Enfin, c'est une suggestion pour voir.

Discussions similaires

  1. Lecture du contenu du ComboBox
    Par noussa_nouha dans le forum AWT/Swing
    Réponses: 23
    Dernier message: 18/07/2006, 16h42
  2. [VB5] |Lecture du contenu d'un fichier .TXRT|
    Par jlb59 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/06/2006, 17h16
  3. Réponses: 45
    Dernier message: 04/05/2006, 01h10
  4. problème avec net::http
    Par piotr dans le forum Modules
    Réponses: 3
    Dernier message: 20/03/2006, 10h44
  5. Besoin de s'authentifier avec NET::HTTP + IIS NTLM
    Par vincnet dans le forum Modules
    Réponses: 9
    Dernier message: 27/07/2005, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo