---
name: "AnyEvent::Gearman::Worker"
section: "3pm"
platform: "linux"
package: "libanyevent-gearman-perl"
version: "0.10-3"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/AnyEvent::Gearman::Worker"
---

# AnyEvent::Gearman::Worker(3pm)

Gearman worker for AnyEvent application

## 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.
