poignée lwp délai d'attente de manière efficace
Je suis en utilisant LWP pour télécharger du contenu à partir de pages web, et je voudrais limiter la quantité de temps qu'il attend une page. Ceci est accompli en lwp comme ceci:
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->get($url);
Et cela fonctionne très bien, sauf lorsque le délai d'attente atteint sa limite, il vient de se meurt et je ne peux pas continuer avec le script! Je tiens vraiment à les gérer ce délai correctement de sorte que je peux enregistrer que l'url a un délai d'attente et avant de passer à mon prochain. Personne ne sait comment faire cela? Merci!
OriginalL'auteur srchulo | 2012-06-12
Vous devez vous connecter pour publier un commentaire.
LWP::Agent de's
get()
renvoie une HTTP::Response objet que vous pouvez utiliser pour la vérification des erreurs:Btw, la meilleure pratique de nos jours est d'utiliser Essayez::Minuscule au lieu de
eval {...}
. Il vous donnetry {...} catch {...}
. et il résout certains problèmes avec la vérification deif $@
(voir la section arrière-plan dans leTry::Tiny
documentation).Ne sais pas pour sûr. Avez-vous
use HTTP::Status
? Quelles sont les valeurs réelles de$response->message
et$response->code
? Est-ce une réelle délai d'attente (code 408)?J'ai utilisé le code exactement comme il est au-dessus "HTTP::Status::HTTP_REQUEST_TIMEOUT". $response->message est "délai d'attente" et $response->code contient "500".
HTTP_REQUEST_TIMEOUT représente le code d'erreur 408. Code 500 est une erreur de serveur, de sorte que vous pourriez voulez pas juste pour vérifier l'erreur de dépassement de délai. Voir HTTP::Status pour la liste complète des codes d'erreur.
grand. Merci beaucoup!
OriginalL'auteur stevenl
Vous pouvez faire l'équivalent d'un try{} catch {} en Perl en utilisant eval blocs:
http://perldoc.perl.org/functions/eval.html
OriginalL'auteur Soz
Pour la plupart des fins, de LWP::UserAgent du délai est suffisant, mais il ne souffre de quelques inconvénients... il s'applique à chaque appel système, plutôt qu'à l'ensemble d'entre eux. Si vous avez vraiment besoin d'un délai fixe de la période, c'est l'une des choses que LWPx::ParanoidAgent prend soin off.
OriginalL'auteur ysth