2011-03-13 76 views
0

我試着在論壇上尋找並搜索答案,但無法弄清楚。在提交需要時間進行計算的網頁表單之後,Mechanize會等待所有計算完成(即使需要一個小時?)。看起來似乎沒有發生。我正在遍歷一個創建Mechanize對象的子例程,並提交一個表單並在計算完成後下載輸出文件。然而,我覺得它跳轉到循環的下一次迭代而沒有完成所有這些任務,因爲有些時候計算需要很長時間。有沒有人有什麼建議?謝謝。這是在子程序有關提交()的機械化問題

sub microinspector { 
     my ($sequence, $folder) = @_; 
     print STDOUT "subroutine sequence: $sequence\n"; 
     my $browser = WWW::Mechanize->new(); 
     $browser->get("http://bioinfo.uni-plovdiv.bg/microinspector/"); 
     $browser->form_number(1); 
     $browser->field("target_sequence", $sequence); 
     $browser->select("Choose an organism : ", "Mus musculus"); 

     $browser->submit(); 
     #print $browser->content(); 
     my @links = $browser->links(); 

     chdir($folder) or die "Cannot chdir to $folder"; 

     foreach my $link (@links) { 
       #print $link->url(); 
       if($link->url() =~ /csv$/i){ 
         my $result = $browser->get($link->url()); 
         my $filename = ($link->url() =~ /\/([^\/]+)$/)[0]; 
         print "Saving $filename\n"; 
         open(OUT, ">$filename"); 
         print OUT $result->content(); 
         close(OUT); 
       } 
     } 
} 

回答

4

WWW::Mechanize可以在其構造方法的可選timeout參數(以秒爲單位)(其被傳遞給它的父類LWP::UserAgent在這種情況下)。我認爲默認值是180秒。

嘗試增加它,如:

my $browser = WWW::Mechanize->new(
    timeout => 60 * 10,  # 10 minutes 
); 

見關於timeout方法LWP::UserAgent文檔爲這是怎麼治療的具體語義。它大部分是你所期望的,但以防萬一。