在 perl 腳本中,我像這樣使用 LWP::UserAgent:
my $ua = LWP::UserAgent->new( keep_alive => 10 );
在做$ua->get了幾千次從https://example.com獲取 URL 之后,我希望$ua->conn_cache有十個打開的連接。但是,如果我使用 Data::Dumper 并執行以下操作:
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 之類的東西。
uj5u.com熱心網友回復:
處理對同一主機的多個連續請求的最有效方法是重用一個到該主機的持久 TCP 連接 - 這正是您所看到的。如果對同一主機的請求是并行而不是順序發送的,或者如果請求被發送到多個主機,則需要更多的連接。
要檢查后者,只需向 example.com 和 example.org 發出請求 - 您最終會在連接快取中獲得兩個條目,一個用于 example.com,一個用于 example.org。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/376622.html
