0

我正在与 WWW::Mechanize 合作,将网站上的产品目录添加到我们的数据库 (Ingram Micro) 中。一切都通过 SSL。

我收到如下随机错误:

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

...但是,LWP::Protocol::https安装。事实上,大部分时间一切正常。我唯一能想到的是,这与在 Windows 上使用线程有关(该进程将作业拆分为 25 个线程,以弥补 Ingram 网站交付每个页面所花费的长时间)。当我使用单线程时,我还没有看到错误(到目前为止)。

错误不会每次都发生,通常只发生在一个线程上,其余的可以在没有收到它的情况下工作。

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

谢谢,

弗朗西斯科

编辑:以防万一有人想知道,我在使用 MSVC10 构建的 Windows 7 x64 和 Perl 5.16.3 x64 上。

4

2 回答 2

1

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

该线程(呃...讨论)还提供了一些潜在的解决方案。

于 2013-04-04T16:05:36.100 回答
0

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

$mech = $mech->clone();
于 2013-04-04T17:06:42.937 回答