[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