Я использую WWW :: Механизируйте, чтобы читать определенную веб-страницу в цикле, который запускается каждые несколько секунд. Иногда «GET» истекает, и скрипт перестает работать. Как я могу оправиться от одного такого таймаута, чтобы он продолжал цикл и пробует «GET» в следующий раз?Как я могу оправиться от тайм-аута с помощью Perl WWW :: Mechanize?
4
A
ответ
3
Использование 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";
}
eval
блока будет поймать любую ошибку при Geting страницы.
1
Одним из вариантов было бы реализовать метод обработки ошибок тайм-аута и привязать его к объекту-меху во время построения в качестве обработчика onerror
. См. Constructor and Startup в документах.
Можно даже игнорировать ошибки, установив нулевой обработчик ошибок, например:
my $mech = WWW::Mechanize->new(onerror => undef);
, но я бы не рекомендовал, что - вы просто получите странные проблемы позже.
0
Это решение продолжит попытки загрузить страницу до тех пор, пока она не будет работать.
do {
eval {
$mech->get($url);
};
} while ([email protected] ne '');