Perl 如何使LWP在超时时继续而不是终止?

Perl 如何使LWP在超时时继续而不是终止?,perl,lwp-useragent,Perl,Lwp Useragent,有人知道吗?继续什么 如果要禁用超时,只需在用户代理对象上调用->timeout(0) 要防止异常结束进程,请将代码包装在eval{}块中;看 但我很想知道你是如何得到你所展示的例外的;以正常方式使用LWP将已经捕获该异常并返回错误响应,从而允许代码继续。如果需要帮助,请显示您的代码。LWP将继续执行超时时的下一条语句。具体来说,它返回一个带有5xx错误代码的HTTP::Response对象 read timeout at /usr/lib/perl5/site_perl/5.8.8/LWP/P

有人知道吗?

继续什么

如果要禁用超时,只需在用户代理对象上调用
->timeout(0)

要防止异常结束进程,请将代码包装在
eval{}
块中;看

但我很想知道你是如何得到你所展示的例外的;以正常方式使用LWP将已经捕获该异常并返回错误响应,从而允许代码继续。如果需要帮助,请显示您的代码。

LWP将继续执行超时时的下一条语句。具体来说,它返回一个带有5xx错误代码的HTTP::Response对象

read timeout at /usr/lib/perl5/site_perl/5.8.8/LWP/Protocol/http.pm line 426. at /usr/lib/perl5/site_perl/5.8.8/LWP/UserAgent.pm line 844

有时,当请求被发送并且响应被接收,然后,在这个过程中间中断连接(你的Internet连接下降),LWP将返回一个<代码> $Realth->代码 200,并且将有一个<代码> $Realth->内容< /C> >等于你所请求的内容的部分下载。然后,如果您重试,您将立即得到读取超时错误

当然,只有当连接在流程的某个特定部分丢失时,才会发生这种情况。。。但它确实发生了


我建议您验证收到的内容是否完整,如果不完整,请在尝试下一次连接之前解决它。

继续运行下一条语句,而不是仅仅终止。如果将timeout设置为
0
,LWP是否可能永远挂起?无超时的确切含义是什么?因为它可以无休止地等待,因此永远挂在那里。。。
>perl -MLWP -e"my $ua = LWP::UserAgent->new(timeout => 1); print $ua->get('http://...something really slow...')->as_string;"
500 read timeout
Content-Type: text/plain
Client-Date: Thu, 30 Jun 2011 06:35:11 GMT
Client-Warning: Internal response

read timeout at .../lib/LWP/Protocol/http.pm line 433.