NAME
Job::Async - IO::Async abstraction for dispatching tasks to workers and
receiving results
DESCRIPTION
More API details are in the respective base classes:
* Job::Async::Client - queues jobs for workers to process
* Job::Async::Worker - handles the job processing part
Normally, clients and workers would be in separate processes, probably
distributed across multiple servers.
worker
Attaches a Job::Async::Worker instance as a child of this manager
object, and returns the new worker instance.
Takes two parameters:
* $type - used to select the worker class, e.g. memory or redis
* $cfg - the configuration parameters to pass to the new worker, as a
hashref
Example:
my $worker = $jobman->worker(
redis => { uri => 'redis://server', mode => 'reliable' }
);
$worker->start;
$worker->jobs->each(sub { $_->done($_->data('x') . $_->data('y')) });
$worker->trigger;
client
Attaches a Job::Async::Client instance as a child of this manager
object, and returns the new client instance.
Takes two parameters:
* $type - used to select the worker class, e.g. memory or redis
* $cfg - the configuration parameters to pass to the new worker, as a
hashref
Example:
print "Job result was " . $jobman->client(
redis => { uri => 'redis://server', mode => 'reliable' }
)->submit(
x => 123,
y => 456
)->get;
SEE ALSO
The main feature missing from the other alternatives is job completion
notification - seems that "fire and forget" is a popular model.
* Gearman - venerable contender for background job handling, usually
database-backed
* TheScwhartz - reliable job queuing, database-backed again
* Minion - integrates with Mojolicious, normally seems to be used
with a PostgreSQL backend. Has some useful routing and admin
features. Does have some support for notification - see
Minion::Notifier for example - but at the time of writing this came
with significant overhead.
* Mojo::Redis::Processor - a curious hybrid of Mojo::Redis2 and
RedisDB, using pub/sub and a race on SETNX calls to handle multiple
instances possibly trying to queue the same job at once.
* Redis::JobQueue
* Qless
* Queue::Q
* Vayne
* Resque
* Disque
* Sque
AUTHOR
Tom Molesworth <
[email protected]>
LICENSE
Copyright Tom Molesworth 2015-2017. Licensed under the same terms as
Perl itself.