There's no limit on how many connections Mojo::UserAgent can make, so you 
have to restrict that yourself. Something like this might work:

  my $mainarray = [];
  my $ua = Mojo::UserAgent->new;
  my $gather;

  $gather = sub {
    my ($ua, $tx) = @_;
    my $graphname = "whatever";
    $tx->res->content->asset->move_to($graphname);
    return $ua->emit('completely_done') unless @$mainarray;
    return $ua->get(shift(@$mainarray)->{graphURL}, $gather);
  };

  $ua->on(completely_done => sub { Mojo::IOLoop->stop });

  for (1..40) {
    my $mhash = shift @$mainarray or last;
    $ua->get($mhash->{graphURL}, $gather);
  }

  Mojo::IOLoop->start;


On Thursday, March 10, 2016 at 12:00:58 AM UTC+1, Юрий Корик wrote:
>
> Hello guys.
>
> I've wrote script like this to get about 2000 charts from Graphite:
>
>
> use Mojo::UserAgent;
> use Mojo::IOLoop;
>
> my $ua = Mojo::UserAgent->new;
>
> foreach my $mhash (@{$mainarray}) {
>   $ua->get($mhash->{graphURL} => sub {
>        my ($ua, $tx) = @_;
>        $tx->res->content->asset->move_to($graphname);
>   });
> }
>
> Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
>
> 1;
>
> How can I restrict Mojo::UserAgent to create only 40 concurrent connection 
> to remote server?
>
> With best regards, Yuriy.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mojolicious+unsubscr...@googlegroups.com.
To post to this group, send email to mojolicious@googlegroups.com.
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to