Introduction to gearman

Matt Sergeant <matt@sergeant.org>

Unreliable Perl Job Server

The Problem

Gearmand

Example

Synchronous Client Code

my $gearman = Gearman::Client::Async->new(
    job_servers => ['hp-monitor.messagelabs.net']
    );
my $result_ref = $gearman->do_task("scan", \$mail, {});

Async Client Code

my $gearman = Gearman::Client::Async->new(
    job_servers => ['hp-monitor.messagelabs.net']
    );
my %opts;
$opts{on_complete} = sub { ... };
$opts{timeout}     = 10; # seconds
$opts{on_fail}     = sub { ... };
my $task = Gearman::Task->new("scan", \$mail, \%opts);
$gearman->add_task($task);

Worker code

sub start_worker {
    my $worker = Gearman::Worker->new();
    $worker->job_servers('hp-monitor.messagelabs.net');
    $worker->register_function(scan => \&scan);
    $worker->work while 1;
}