scieloorg / kernel

É o componente central da nova arquitetura de sistemas de informação da Metodologia SciELO, ainda em fase de desenvolvimento.
https://docs.google.com/document/d/14YBl7--4ouaWBQhxzUYWRuhmegwnSYrDgupsED6rhvM/edit?usp=sharing
BSD 2-Clause "Simplified" License
6 stars 11 forks source link

Adiciona decorator *retry_gracefully* #149

Closed gustavofonseca closed 5 years ago

gustavofonseca commented 5 years ago

O que esse PR faz?

Acrescenta um decorator factory capaz de tentar novamente quando uma exceção recuperável for lançada, contribuindo para a resiliência da aplicação na sua integração com o object-store.

Foram acrescentadas 2 variáveis de ambiente que configuram o intervalo e quantidade máxima de tentativas. Penso que tratam-se de parâmetros internos do Kernel enquanto lib, portanto são carregados diretamente no módulo e não por meio do arquivo de configuração da app pyramid (.ini).

Onde a revisão poderia começar?

Acredito que o módulo de testes seja um bom ponto de partida: tests.test_domain.RetryGracefullyDecoratorTests.

Como este poderia ser testado manualmente?

Duas maneiras:

  1. Executando a suíte de testes automatizados;
  2. Executando uma instância local e provocando instabilidade na conexão de rede durante operações que envolvem a obtenção do XML a partir do object-store (recuperação de um XML por exemplo)

Algum cenário de contexto que queira dar?

Decidi implementar esta funcionalidade enquanto realizava testes no Kernel onde estavam sendo carregados centenas de documentos em poucos segundos. Os documentos apontavam para o arquivo XML hospedado no GitHub e em alguns momentos ocorriam timeouts.

Screenshots

Quais são tickets relevantes?

Referências