gpt4 book ai didi

perl - 重用 LWP :UserAgent?

转载 作者:可可西里 更新时间:2023-11-01 02:49:09 26 4
gpt4 key购买 nike

如何在 perl 中最佳地使用 LWP::UserAgent?
如果我需要进行多次 http 调用,我会重用同一个对象吗?
例如。

my $browser = LWP::UserAgent->new;    
foreach my $url (@urls) {
my $response = $browser->get( $url );
# process response
}

或者

foreach my $url (@urls) {  
my $browser = LWP::UserAgent->new;
my $response = $browser->get( $url );
# process response
}

在我看来,第二个版本效率低下,因为它每次都会重新打开连接,对吧?我应该注意什么问题?

最佳答案

正如 Miller 评论的那样,您的两个代码示例在效率方面并没有太大的不同。对于每个循环迭代,两者都将通过新连接发送新的 GET 请求,这比创建对象的成本更重要。

您可以使用实验性 模块缓存连接 LWP::ConnCache :

use LWP::ConnCache;
use LWP::UserAgent;

my $cache = LWP::ConnCache->new;
$cache->total_capacity(10); # Cache up to 10 connections

my $ua = LWP::UserAgent->new(conn_cache => $cache);
# Alternatively, my $ua = LWP::UserAgent->new(keep_alive => 10);

$ua->get('http://www.google.com');
$ua->get('http://www.google.com'); # Should reuse cached connection

请注意,您可以在多个 LWP::UserAgent 中使用相同的 LWP::ConnCache 对象。

关于perl - 重用 LWP :UserAgent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22819211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com