关于提交()的机械化问题

时间:2011-03-13 06:31:18

标签: perl mechanize bioinformatics

我试着在论坛上四处寻找并搜索答案,但无法弄明白。在提交需要时间进行计算的网页表单之后,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 );
                }
        }
}

1 个答案:

答案 0 :(得分:4)

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

尝试增加它,例如:

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

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

相关问题