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
有谁知道?
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
有谁知道?
LWP会继续执行下一条关于超时的语句。具体来说,它返回一个带有 5xx 错误代码的 HTTP::Response 对象。
>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.
继续什么?
如果您想禁用超时,只需调用->timeout(0)
您的用户代理对象。
为防止异常结束您的进程,请将代码包装在一个eval {}
块中;见http://perldoc.perl.org/functions/eval.html。
但我很想知道你是如何得到你展示的异常的;以正常方式使用 LWP 将已经捕获该异常并返回错误响应,从而允许您的代码继续。如果您需要帮助,请显示您的代码。
有时,发送请求并接收响应,然后,在此过程中连接中断(您的 Internet 连接中断),LWP 将返回$response->code
200 的 a,并且将有一个$response->content
等于部分下载您要求的内容。然后,如果您重试,您将立即收到读取超时错误。
当然,这种情况只有在连接在流程的特定部分丢失时才会发生……但它确实会发生。
我建议您验证您收到的内容是否完整,如果不完整,请在尝试下一次连接之前解决它。