NAME¶
AnyEvent::Gearman::Worker - Gearman worker for AnyEvent application
SYNOPSIS¶
use AnyEvent::Gearman::Worker;
# create gearman worker
my $worker = AnyEvent::Gearman::Worker->new(
job_servers => ['127.0.0.1', '192.168.0.1:123'],
);
# add worker function
$worker->register_function( reverse => sub {
my $job = shift;
my $res = reverse $job->workload;
$job->complete($res);
});
DESCRIPTION¶
This is Gearman worker module for AnyEvent applications.
METHODS¶
new(%options)¶
Create gearman worker object.
my $worker = AnyEvent::Gearman::Worker->new(
job_servers => ['127.0.0.1', '192.168.0.1:123'],
);
Options are:
- job_servers => 'ArrayRef'
- List of gearman servers. 'host:port' or just 'host' formats are allowed.
In latter case, gearman default port 4730 will be used.
You should set at least one job_server.
register_function( $function_name, $subref )¶
Register worker function.
$worker->register_function( reverse => sub {
my $job = shift;
my $res = reverse $job->workload;
$job->complete($res);
});
$function_name is function name string to register.
$subref is worker CodeRef that will be executed when the worker received a
request for this function. And it will be passed a AnyEvent::Gearman::Job
object representing the job that has been received by the worker.
NOTE: Unlike Gearman::Worker, this module ignore $subref's return value. So you
should call either "$job->complete" or "$job->fail"
at least.
This is because this module stands AnyEvent's asynchronous way, and this way
more flexible in AnyEvent world.
For example:
$worker->register_function( reverse => sub {
my $job = shift;
my $t; $t = AnyEvent->timer(
after => 10,
cb => sub {
undef $t;
$job->complete('done!');
},
);
});
This is simplest and meaningless codes but you can write worker process with
AnyEvent way. This is asynchronous worker.
unregister_function( $function_name )¶
Unregister worker function, notifying to server that this worker no longer
handle $function_name.
AUTHOR¶
Daisuke Murase <typester@cpan.org>
Pedro Melo <melo@cpan.org>
COPYRIGHT AND LICENSE¶
Copyright (c) 2009 by KAYAC Inc.
This program is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this
module.