2011-03-13 11 views
0

私はフォーラムを見回して答えを求めていましたが、それを理解できませんでした。いくつかの計算を行う時間が必要なWebページ用のフォームを送信した後、Mechanizeはすべての計算が完了するのを待っています(時間がかかっていても)。まるでそれが起こらないかのようです。私は、Mechanizeオブジェクトを作成し、フォームを送信し、計算が完了した後に出力ファイルをダウンロードするサブルーチンを反復しています。しかし、何度か計算に時間がかかるため、これらのタスクをすべて完了することなくループの次の繰り返しにジャンプするような気がします。誰にも何か提案はありますか?ありがとう。これは、(この場合は、その親クラスLWP::UserAgentに渡される)そのコンストラクタで(秒単位で指定)オプションのtimeoutパラメータを取ることができサブルーチン提出に関する機械化の問題

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です。私はデフォルトが180秒のようだと思う。

のように、それを増やしてみてください:

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

が、これがどのように扱われるかの固有の意味にtimeout方法でLWP::UserAgentドキュメントを参照してください。それは主にあなたの期待通りですが、場合によってはそうです。

関連する問題