WWW::机械化随机错误:不支持协议方案'https'(LWP::P rotocol::https 未安装)



我正在与WWW::Mechanize合作,将网站上的产品目录放入我们的数据库(英迈)。一切都在SSL之上。

我收到一个随机错误,如下所示:

Protocol scheme 'https' is not supported (LWP::Protocol::https not installed)

…但是,LWP::Protocol::https 安装。事实上,大多数时候一切都很好。我能想到的唯一一件事是,这与Windows上使用线程有关(该进程将任务划分为25个线程,以补偿英格拉姆网站交付每个页面所需的长时间)。当我使用单个线程时,我还没有看到错误(到目前为止)。

这个错误不是每次都发生,通常只发生在一个线程上,其他线程不需要接收它就可以工作。

然而,这真的很奇怪。我想知道这里是否有人以前见过这样的事情,或者是否有人知道为什么会发生这种情况。

谢谢,

旧金山

编辑:以防有人想知道,我在Windows 7 x64和Perl 5.16.3 x64与MSVC10构建。

这可能是一个模块不是线程安全的问题。请参阅Perlmonks关于LWP和https的讨论。

这个主题(呃…讨论)也提供了一些可能的解决方案。

我使用的解决方案是在每个线程开始时克隆Mechanize对象,并且使用克隆版本。但正如我所说,我使用的是WWW::Mechanize,而不是普通的LWP

$mech = $mech->clone();

最新更新