Broker::Async - broker tasks for multiple workers
my @workers; for my $uri (@uris) { my $client = SomeClient->new($uri); push @workers, sub { $client->request(@_) }; } my $broker = Broker::Async->new(workers => \@workers); for my $future (map $broker->do($_), @requests) { my $result = $future->get; ... }
This module brokers tasks for multiple asynchronous workers. A worker can be any code reference that returns a Future, representing work awaiting completion.
Some common use cases include throttling asynchronous requests to a server, or delegating tasks to a limited number of processes.
An array ref of workers used for handling tasks. Can be a code reference, a hash ref of Broker::Async::Worker arguments, or a Broker::Async::Worker object. Every invocation of a worker must return a Future object.
Under the hood, code and hash references are simply used to instantiate a Broker::Async::Worker object. See Broker::Async::Worker for more documentation about how these parameters are used.
my $broker = Broker::Async->new( workers => [ sub { ... }, ... ], );
my $future = $broker->do(@args);
Queue the invocation of a worker with @args. @args can be any data structure, and is passed as is to a worker code ref. Returns a Future object that resolves when the work is done.
There is no guarantee when a worker will be called, that depends on when a worker becomes available. However, calls are guaranteed to be invoked in the order they are seen by $broker->do.
Mark Flickinger <maf@cpan.org>
This software is licensed under the same terms as Perl itself.
To install Broker::Async, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Broker::Async
CPAN shell
perl -MCPAN -e shell install Broker::Async
For more information on module installation, please visit the detailed CPAN module installation guide.