所以,我研究到互联网的有关此问题的两端(至少我是这么认为的)。 我想设置一个alarm
60秒超时的get()
,但它并没有被抓住,将运行过去的60秒,也达到了WWW默认的超时时间(180秒)的任何时间::机械化::定时构造函数,我得到的错误如下:
除了(+)在/usr/lib/perl5/site_perl/5.10.0/WWW/Mechanize/Timed.pm线52利用未初始化值的。
码:
use WWW::Mechanize::Timed;
use HTTP::Cookies;
use Try::Tiny;
my $ua = WWW::Mechanize::Timed->new(
autocheck => 0#turning off autocheck becuase any get errors will be fatal need to check ourselves
);
my $cookies = HTTP::Cookies->new(
autosave => 1
);
$ua->cookie_jar($cookies);
$ua->agent_alias("Windows IE 6");
try{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 60;
$ua->get('https://secure.site.com'); #secure site that timed out
alarm 0;
} catch {
die $_ unless $_ eq "alarm\n";
print "page timed out after 60 seconds!\n";
exit;
};
my $total_time = sprintf '%.3f', ($ua->client_elapsed_time);
unless($ua->success){
print "Error: " . $ua->status;
exit;
}
...
我已经对这些问题弄清楚如何让报警器没有写我自己的超时功能工作。
Perl的机械化超时不以https工作和方式做超时在Perl?
到目前为止,我见建议使用LWPx :: ParanoidAgent,不知道我理解的“使用LWPx :: ParanoidAgent并混入机甲”的一部分
可以使用在WWW超时::对HTTPS机械化?
或修补LWP :: UserAgent的用
http://search.cpan.org/~sharyanto/LWP-UserAgent-Patch-HTTPSHardTimeout-0.04/lib/LWP/UserAgent/Patch/HTTPSHardTimeout.pm
如何让超时与工作报警有什么想法?
谢谢!