[SP-pm] Dynamic Unload

Renato Santos renato.cron at gmail.com
Fri Jul 26 06:17:53 PDT 2013


Hmm

Se fosse uma aplicação tipo REST você poderia criar o processo com as novas
mudanças e depois matar o processo desatualizado e passar o trabalho só pro
novo.

Isso não é exatamente um reload, mas é o mais seguro que se pode fazer
Em 26/07/2013 09:11, "Blabos de Blebe" <blabos at gmail.com> escreveu:

> Oi pessoal,
>
> Ultimamente eu tenho brincado com carregamento dinâmico e surgiu a
> necessidade de fazer um "reload" de módulos que eu carreguei dinamicamente,
> pois eu quero subir uma versão atualizada de um módulo sem reiniciar a
> aplicação.
>
> Suponham o seguinte cenário de teste:
>
> while(<>) {
>     reload( 'Foo::Bar' );
>     say Foo::Bar::hello();
> }
>
> Atualmente, eu uso um módulo que faz o load(), então para completar o
> "reload" eu preciso fazer o "unload":
>
> sub reload {
>     my $module = shift;
>
>     unload( $module );
>     load( $module );
> }
>
> Para isso eu dei uma olhada no cpan e encontrei o módulo Class::Unload,
> mas infelizmente o exemplo que ele tem na sinopse não funciona no meu
> cenário.
>
> Pesquisando um pouco mais eu encontrei os seguinte código:
>
> sub unload {
>     my $module = shift;
>     my $filename = to_filename( $module );
>     delete $INC{ $filename };
> }
>
> Esse código faz com que a cada passo do loop o módulo 'Foo::Bar' seja
> carregado, e as alterações no seu fonte sejam visíveis na aplicação,
> atingindo o meu objetivo.
>
> Entretanto, essa solução está me cheirando a gambiarra. Eu estou
> preocupado com memory leaks e coisas do gênero, pois pretendo utilizar esse
> "reload" em uma aplicação que teoricamente rodaria indefinidamente.
>
> Vocês poderiam apontar outros módulos que lidam com esse problema de forma
> segura, ou documentação mais específica onde eu possa entender melhor o
> processo?
>
> Mais do que uma solução para o meu cenário, eu estou procurando entender
> melhor o processo.
>
> []'s
>
> =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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130726/661841c0/attachment.html>


More information about the SaoPaulo-pm mailing list