"Non-blocking socket operation" LWP::Perl 的用户代理包中的错误




以下代码在Windows 7 Pro上产生错误,它读取5-8K字节的网页,然后终止:

use strict;
use LWP::UserAgent;
my $url = 'https://www.flickr.com/photos/71475421@N02/26176178323/';
my $ua = LWP::UserAgent->new;
my $res = $ua->get($url);
print $res->headers->as_string;

错误为:

X-Died: read failed: A non-blocking socket operation could not be 
completed immediately. at C:/Perl/lib/LWP/Protocol/http.pm line 467.

操作系统:Win 7 Pro(64位)
Perl:5.20.1(32位)
LWP:6.08
LWP协议https:6.06

有什么想法吗?为什么它不起作用,以及如何修复?

谢谢。

这个问题可能是由于只针对EAGAIN而不是EWOULDBLOCK进行检查。这些错误代码在大多数UNIX上相同,但在Windows上不同。我建议使用较新版本的LWP(至少6.09版),因为它明确处理了这个问题,并检查了这两种情况。

ActivePerl本身(及其过时的LWP包)似乎是罪魁祸首
切换到Strawberry Perl,它就像魅力一样工作
正在转储ActivePerl。。。

最新更新