2010-09-22 69 views
4

我正在使用WWW :: Mechanize在每隔幾秒鐘運行一次的循環中讀取特定的網頁。偶爾,'GET'超時並且腳本停止運行。我怎麼能從一個這樣的超時恢復,以便它繼續循環,並在下一次嘗試'GET'?如何使用Perl的WWW :: Mechanize從超時恢復?

回答

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塊將捕獲任何錯誤,而歌廳的頁面。

1

一個選項是實現一個方法來處理超時錯誤,並在施工時將其掛接到機器對象,如onerror處理程序。請參閱文檔中的Constructor and Startup

你甚至可以通過設置零錯誤處理程序,例如忽略錯誤:

my $mech = WWW::Mechanize->new(onerror => undef); 

,但我不會建議 - 你只得到奇怪的問題,後來。

0

此解決方案將繼續嘗試加載頁面,直到它工作。

do { 
    eval { 
     $mech->get($url); 
    }; 
} while ([email protected] ne ''); 
相關問題