如何在Perl中记录HTTP :: Async通信?

时间:2012-04-05 22:11:34

标签: multithreading perl logging

我的Perl代码使用threadsHTTP::Async多个出站IP地址>>

use threads ( 'yield',
              'exit' => 'threads_only',
              'stack_size' => 2*16384 );
use strict;
use warnings;
 no warnings 'threads';
use threads::shared;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Async;
...
my $async = HTTP::Async->new( ... );
...
foreach (@list) {
  $thread = threads->create( sub {
    local $SIG{KILL} = sub { threads->exit };
    ...
    $ua->local_address($ip);
    $request->url($url);
    $async->add($request);
    while ($response = $async->wait_for_next_response) {
      ...
    }
  }, $_);
}
...

我需要生成一些基本应用日志,其中包括网址出站IP 信息。

如何记录HTTP::Async通讯?

1 个答案:

答案 0 :(得分:2)

您实际上并没有在该代码中使用LWP,而只是加载它。同样,从您的代码示例中,您不清楚为什么使用线程。 HTTP :: Async负责“一次”执行多个HTTP请求。

HTTP::Async看起来没有任何内置的调试机制,但在该模块中添加'debug'标志并在适当的位置添加一些警告语句相对简单帮助了解它正在做什么。您还可以在自己的代码中添加调试代码,使用HTTP :: Async。