WWW::Mechanize::Тайм-аут Firefox

Как правильно использовать тайм-аут, когда я пытаюсь сделать ->get(URL) запросы с WWW::Mechanize::Firefox?

my $mech = WWW::Mechanize::Firefox->new(timeout => 10); не работает


person Bijan    schedule 07.01.2016    source источник
comment
Вы не первый, кто задается этим вопросом. К сожалению, похоже, что это не поддерживается W:: M::F, поэтому вам, возможно, придется самостоятельно реализовать тайм-аут с помощью alarm.   -  person ThisSuitIsBlackNot    schedule 07.01.2016


Ответы (1)


Это можно смоделировать, по крайней мере, в хорошей степени.

Вы можете отключить синхронизацию для get, и в этом случае вызов должен вернуться немедленно. Затем опрашивайте каждые $sleep_time до истечения времени ожидания с некоторой проверкой того, завершена ли страница. Сон позволяет завершить все другие хорошие страницы, поэтому установите $sleep_time соответствующим образом.

my $timeout = 10; 
my $sleep_time = 1;

my $page = get($url, synchronize => 0); 

for (1..$timeout) {
    # Test some page property that will confirm that it loaded
    last if $page->title eq $expected_title;
    sleep $sleep_time;
}

Есть вопрос, как именно подтверждать каждую страницу, но это должно обеспечить рабочий тайм-аут.

person zdim    schedule 06.04.2016
comment
Я вижу, что это более старый пост, но идея простого тайм-аута может быть полезной. - person zdim; 06.04.2016