Eu já li bastante sobre AnyEvent e ZMQ. Alguém já usou?

Marcelo Milhomem
is4Web Sistemas

Em 2013-09-19 15:41, Renato Santos escreveu:
Opa,

dá sim!

Vamos supor que você quer criar uma fila para processar imagens.

nos exemplos, usei Redis ou Redis::Client.

o processo seria algo como:

        * recebe a imagem, salva no disco compartilhado ou "cloud", insere no
banco (para talvez mostrar para o usuario o status) 
        * insere na fila dizendo algo como "PROCESSA IMAGEM ID 10"
        * $c->res->body("senta e reza, sua imagem vai ser processada (ou
não)") and $c->deatch;

ai você precisa de um worker pra retirar da fila e processar a
imagem, salvar o status no banco, etc..

para o catalyst/qualquer lugar adicionar na fila, seria algo como:

$cliente_redis->rpush( $nome_da_fila => "json ou alguma coisa assim
contendo o id/caminho da imagem" );

e ai, em um 'worker' você teria o código assim:

while (my $item_da_fila = get_item  ){
  ...
}

sub get_item {

   my ( $list, $item )  = $cliente_redis->blpop( $nome_da_fila, 0
);

   if (defined $item) {
         return decode_json $item 

    }else{
        # timeout, mas como ta 0, nunca devieria entrar aqui!
    }
}

Ai você ainda pode ter, por exemplo, 10 workers, ou 100, etc..

ps: Redis::Client não tem algumas coisas...
o https://metacpan.org/module/Redis [6] tem auto-reconnect, por
exemplo!

2013/9/19 Blabos de Blebe <[email protected]>

O pé de coelho tá instalando o mundo aqui, mas como onde ele vai
rodar já tem um mundo e meio instalado, não é problema

Cron, não entendi a do redis. Dá pra desenhar? :)

2013/9/19 Renato Santos <[email protected]>

pera ai..

você precisa só *DISPATCH*har um job e *DETACH*ar o processo do
catalyst para que ele possa receber outras conexões, certo?

estranho esses modulos não estarem instalando,

mas você pode utilizar então redis as
queue, http://redis.io/commands/rpoplpush [1]

assim você faz o catalyst colocar o job na fila, e alguem processa
isso, e 'algum dia' alguem olha o resultado.

Redis é o mais leve, mas existem vários softwares ESPECIALIZADOS
EM QUEUE. RABBITMQ, por exemplo.

Uma duvida: no 5.16 funciona? eu não fui pro 5.18 por que acho que
desnecessário por enquanto, por esses motivos (de modulos que podem
apresentar problemas "do nada")

2013/9/19 Blabos de Blebe <[email protected]>

Pessoas,

Estou querendo despachar alguns jobs para serem executados de forma
assíncrona em relação à minha aplicação Catalyst. Eu preciso
de sincronização zero. É só despachar e um dia olhar pro
resultado.

Dei uma olhada no carinha das engrenagens e no coelhinho, mas os
módulos (Gearman e Net::RabbitMQ) não instalam no Perl 5.18.1.

Vocês tem alguma sugestão alternativa? Outros módulos? Outras
abordagens?

Threads está descartado. Fork só se eu ficar muito rico com isso.

[]'s

=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ [2]
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm [3]>
=end disclaimer

--

Saravá,
Renato CRON

http://www.renatocron.com/blog/ [4]
@renato_cron [5]
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ [2]
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm [3]>
=end disclaimer

=begin disclaimer
    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ [2]
  SaoPaulo-pm mailing list: [email protected]
  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm [3]>
 =end disclaimer

--

Saravá,
Renato CRON

http://www.renatocron.com/blog/ [4]
@renato_cron [5]

Links:
------
[1] http://redis.io/commands/rpoplpush
[2] http://sao-paulo.pm.org/
[3] http://mail.pm.org/mailman/listinfo/saopaulo-pm
[4] http://www.renatocron.com/blog/
[5] http://twitter.com/#!/renato_cron
[6] https://metacpan.org/module/Redis

=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
=begin disclaimer
  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a