2013-09-22 24 views
0

我需要使用perl對多個URL進行併發http POST請求。我需要在代碼中進行更改:在perl中運行並行http post請求

use LWP::UserAgent; 

my $ua = LWP::UserAgent->new; 

@urls = ('http://url1.com:10001','http://url2.com:10002','http://url3.com:10003'); 

foreach (@urls) 
{ 
    my $req = HTTP::Request->new(POST => $_); 
    my $resp = $ua->request($req); 
} 

此代碼按順序發送請求。但是我需要並行發送請求以使請求更快。在上面的代碼中我們需要改變什麼?

在此先感謝

+0

您需要爲每個連接創建一個線程。 – elimirks

+1

或者如果你不想通過線程的麻煩,去異步。第一個搜索引擎鏈接:https://metacpan.org/module/KAORU/HTTP-Async-0.21/lib/HTTP/Async.pm儘管你需要重寫你的代碼。 –

+2

http://search.cpan.org/~msouth/ParallelUserAgent-2.61/lib/LWP/Parallel/UserAgent.pm –

回答

0

在單獨的線程中執行每個POST。有關文檔,請參見here

use threads; 
my $t = threads->create(...);