Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > HTTP::Async


Автор: stan777 10.4.2007, 17:30
Код

#!/home/stan/bin/perl -w
use strict;
use HTTP::Async;
use HTTP::Request;

my %args= (
      'slots'=>'20',
          'timeout'=> '2',
 'max_request_time'=> '5',
    'max_redirects'=> '7',
    'poll_interval'=> '0.05',
       'proxy_host'=> '',
       'proxy_port'=> ''
);

my $async = HTTP::Async->new(%args); #

my @mass=(
'http://www.perl.org/',
'http://www.helsinki.fi/',
'http://www.rambler.ru/news/',
);

my @req;

foreach my $ee (@mass) { 
    my $const=HTTP::Request->new(GET=>$ee);
    push(@req, $const); 
}

$async->add(@req); # здесь модуль ждет почему-то, если я устновил 'timeout'=>'2'?

 while ( $async->not_empty ) {
        
    if ( my $response = $async->next_response ) {
            # deal with $response
        print $response->as_string;
        } else {
            # do something else
        }
    }
Я устновил таймаут содинений 'timeout'=> '2' сек, почему при запуске [bash]./script  
прога ждет более 2 секунд(более 5 сек если смотреть на 'max_request_time'=>'5'), описание модуля http://search.cpan.org/~evdb/HTTP-Async-0.07/lib/HTTP/Async.pm, вроде сделал как там  написано, но такое ощущение что модуль сам знает сколько ждать, как исправить ?  Короче модуль не приручается. Конечно в большинстве случаев, скрипт быстро скачивает ссылки, мне необходимо управлять, таймаутом, даже не смотря на то что это параллельные запросы без блокирования. А нужно мне чтобы если таймаут больше 2 сек, то просто рвал соединение. Потестируйте может у кого-нидь нормально работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)