[SP-pm] Jobs

milhomem at is4web.com.br milhomem at is4web.com.br
Thu Sep 19 11:53:22 PDT 2013


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...
>https://metacpan.org/module/Redis [6] tem auto-reconnect, por
> exemplo!
> 
> 2013/9/19 Blabos de Blebe <blabos at gmail.com>
> 
>> 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 <renato.cron at gmail.com>
>> 
>> 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 <blabos at gmail.com>
>> 
>> 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: SaoPaulo-pm at pm.org
>>  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: SaoPaulo-pm at pm.org
>>  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: SaoPaulo-pm at pm.org
>   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: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer


More information about the SaoPaulo-pm mailing list