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

1 回答 1

4

WWW::Mechanize可以在其构造函数(在这种情况下timeout传递给其父类)中采用可选参数(以秒为单位)。LWP::UserAgent我认为默认值是 180 秒。

尝试增加它,例如:

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

有关如何处理的具体语义,请参阅有关方法的LWP::UserAgent文档。timeout这主要是您所期望的,但以防万一。

于 2011-03-13T06:38:58.557 回答