J'utilise WWW :: Mechanize pour lire une page Web particulière dans une boucle qui s'exécute toutes les quelques secondes. Parfois, le 'GET' expire et le script s'arrête. Comment puis-je récupérer à partir d'un tel timeout afin qu'il continue la boucle et essaye le 'GET' la prochaine fois?Comment puis-je récupérer à partir d'un timeout avec WWW :: Mechanize de Perl?
4
A
Répondre
3
Utilisation eval
:
eval {
my $resp = $mech->get($url);
$resp->is_success or die $resp->status_line;
# your code
};
if ([email protected]) {
print "Recovered from a GET error\n";
}
Le bloc eval
attrapera toute erreur en Geting la page.
1
Une option consisterait à implémenter une méthode pour gérer les erreurs de dépassement de délai et à l'ancrer dans l'objet mech au moment de la construction en tant que gestionnaire onerror
. Voir Constructor and Startup dans les docs.
Vous pouvez même ignorer les erreurs en définissant un gestionnaire d'erreurs null, par exemple:
my $mech = WWW::Mechanize->new(onerror => undef);
mais je ne recommanderais pas - vous aurez juste des problèmes étranges plus tard.
0
Cette solution continuera à tenter de charger la page jusqu'à ce qu'elle fonctionne.
do {
eval {
$mech->get($url);
};
} while ([email protected] ne '');