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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.