如何让LWP::UserAgent缓存连接



在perl脚本中,我使用LWP::UserAgent,如下所示:

my $ua = LWP::UserAgent->new( keep_alive => 10 );

在执行CCD_ 1几千次以从(例如(,https://example.com,我希望$ua->conn_cache有十个打开的连接。但是,如果我使用Data::Dumper和do:

print Dumper( $ua->conn_cache );

我只看到一个连接:

$VAR1 = bless( {
'cc_limit_total' => 10,
'cc_conns' => [
[
bless( *Symbol::GEN1, 'LWP::Protocol::https::Socket' ),
'https',
'example.com:443',
1638549871
]
]
}, 'LWP::ConnCache' );

我是做错了什么,还是我只是误解了conn_cache的垃圾堆向我展示的内容?值得一提的是,我获取的URL只在查询参数上有所不同。

编辑:好的,我理解(见下面的答案(。谢谢我将转而研究像LWP::Parallel::UserAgent这样的东西。

处理对同一主机的许多连续请求的最有效方法是重用到该主机的单个持久TCP连接,这正是您所看到的。如果对同一主机的请求是并行发送的,而不是顺序发送的,或者如果向多个主机发送请求,则需要更多的连接。

要检查后者,只需向example.com和example.org发出请求-您将在连接缓存中得到两个条目,一个用于example.com,一个为example.org。

最新更新