[SP-pm] Passar mais de um argumento no Gearman::Worker

Daniel de Oliveira Mantovani daniel.oliveira.mantovani at gmail.com
Tue Jul 27 12:31:05 PDT 2010


Pessoal, o Gearman é uma ferramenta para programação distribuída, mas
pelo que eu entendi ele limita passar um valor scalar como argumento
para a função no Worker, bem eu não sei se isso é uma implicação do
client/worker em Perl ou se é do produto.

<Gearman Worker>
package Foo

use Moose;
use Gearman::Worker;

has 'gearman' => (
    is      => 'ro',
    isa     => 'Gearman::Worker',
    default => sub { Gearman::Worker->new }
);

sub ir {
    my $self = shift;
    $self->gearman->job_servers('127.0.0.1:4730');
    $self->gearman->register_function( 'my_pesquisa' => \&pesquisa );
    $self->gearman->work while 1;
}

sub pesquisa {
    my $job = shift;

 #Quero passar uma referencia de hash para essa função

}
1;

<Gearman Worker>

<Gearman client>
use Gearman::Client;
my $client = Gearman::Client->new;
$client->job_servers('127.0.0.1:4730');

my $res = $client->do_task( my_pesquisa => {foo => '1', bar => '2' );

print "$res\b";

</Gearman Worker>

<erro>
mantovani em mantovani-desktop:~$ perl foo.pl
Function argument must be scalar or scalarref at foo.pl line 7
</erro>

O problema é que eu não achei nada nessa documentação extensa do Gearman,
http://gearman.org/index.php?id=manual:workers

O Gearman limita a passar um scalar a função ?
Uma das idéias que me deram foi usar pack/unpack mas isso vai ficar
muito obscuro.

Então, esse Gearman::Worker/Gearman::Client não me parecem muito bons,
a classe nem ao menos avisa se efetuou a conexão com sucesso ou não,
quando eu vi isso eu achei impossível continuar o projeto usando isso.

Eu achei um bind da biblioteca feito em C para o Gearman, me parece
muito mais completa e com tratamento de erros, ainda não testei. Logo
Logo vou testar.
http://search.cpan.org/~dschoen/Gearman-XS-0.10/lib/Gearman/XS/Client.pm

-- 
http://www.danielmantovani.com

"If you’ve never written anything thoughtful, then you’ve never had
any difficult, important, or interesting thoughts. That’s the secret:
people who don’t write, are people who don’t think."


More information about the SaoPaulo-pm mailing list