Publicado por Eliézer Pimentel em 04 de August de 2009

Construa daemons Ruby seguros com RobustThread

robust threadQuando estiver rodando um daemon Ruby que executa código em loop, se o processo for interrompido durante a execução, você pode ter problemas caso o código não trate todas as exceções corretamente ou se o loop não for interrompido corretamente. A RobustThread é uma classe Ruby criada por Jared Kuolt para a criação de threads, que ajuda a aliviar este problema.

Ela permite criar loggers, exceções de processos e callbackspara as threads, expondo a thread atual através de um atributo. Em princípio, ela usa o log padrão, mas pode ser configurada para usar outro objeto Logger.

Você pode colocar marcadores em loops ou threads, que pode ser útil para registro em logs e durante debugging. Mas talvez o mais importante seja que, ao usar RobustThread.loop, você pode mudar a maneira que o loop funciona para que ele seja interrompido de maneira apropriada na próxima iteração antes da thread ser encerrada:

RobustThread.loop(:seconds => x) do
  do_something
end

Você pode instalar a RobustThread com gem install robustthread, ou baixe o código-fonte do Github. Jared contextualiza o problema e oferece mais alguns exemplos em seu blog.

Deixe um Comentário