我正在与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();