[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...
> o 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