Skip to content

Mons/AnyEvent-Worker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME
    AnyEvent::Worker - Manage blocking task in external process

SYNOPSIS
        use AnyEvent 5;
        use AnyEvent::Worker;
    
        my $worker1 = AnyEvent::Worker->new( [ 'Actual::Worker::Class' => @init_args ] );
        my $worker2 = AnyEvent::Worker->new( sub { return "Cb 1 @_"; } );
        my $worker3 = AnyEvent::Worker->new( {
            class   => 'Actual::Worker::Class2',
            new     => 'create', # alternative constructor
            args    => [qw(arg1 arg2)],
        } );
    
        # Invoke method `test' on Actual::Worker::Class with arguments @args
        $worker1->do( test => @args , sub {
            return warn "Request died: $@" if $@;
            warn "Received response: @_";
        });
    
        # Just call callback, passed to worker2 with arguments @args
        $worker2->do( @args , sub {
            return warn "Request died: $@" if $@;
            warn "Received response: @_";
        });

CONSTRUCTOR
  new $cb->($req), %args
    Simple stateless worker. On any "do" a sub sill be invoked with "do"
    arguments

  new [ Class => @new_args ], %args
    Stateful, object-based worker. After fork, Class will we "use"d, then
    instantiated with new(@new_args).

    First argument to "do" will be interpreted as object method, rest -- as
    method arguments.

  new { class => 'Class', args => \@new_args, new => 'constructor_method' }, %args
    Same as previous, but allow to pass optional constructor name in "new"
    arg

  $args{on_error} = $cb->($worker,$error,$fatal,$file,$line)
    When an unexpected error occurs (for ex: child process exited or killed)
    "on_error" callback will be invoked

METHODS
  do @args, $cb->($res)
    Only for stateless worker.

  do method => @args, $cb->($res)
    Only for stateful worker.

METHODS
    $worker->on_error ($cb->($worker, $filename, $line, $fatal))
        Sets (or clears, with "undef") the "on_error" handler.

    $worker->timeout ($seconds)
        Sets (or clears, with "undef") the database timeout. Useful to
        extend the timeout when you are about to make a really long query.

    $worker->do ( @args, $cb->( $worker, @response ) )
        Executes worker code and execure the callback, when response is
        ready

AUTHOR
    Mons Anderson, "<[email protected]>"

ACKNOWLEDGEMENTS
    This module based on Marc Lehmann's AnyEvent::DBI

    Thanks to Vladimir Timofeev "<[email protected]>" for bugfixes and useful
    notes

About

Blocking worker processes for AnyEvent

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published