NAME
AnyEvent::Gearman::Worker - Gearman worker for AnyEvent application
SYNOPSIS
# 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.