Skip to content

Adiciona timeout em todas as chamadas HTTP dos API Clients - #27

Merged
ThomasTDS merged 1 commit into
masterfrom
feat/timeout-chamadas-http
Oct 2, 2026
Merged

ThomasTDS merged 1 commit into
masterfrom
feat/timeout-chamadas-http

Conversation

@ThomasTDS

Copy link
Copy Markdown
Owner

Resumo

  • Nova classe BaseApiClient (api/base_api_client.py): toda chamada dos clients passa pelo método _request, que monta a URL e aplica o timeout
  • Timeout padrão de (5, 30): 5 segundos para conectar e 30 para receber a resposta. A margem maior na resposta cobre o tempo que o Heroku pode levar para acordar a aplicação. O valor pode ser trocado por client, pelo construtor
  • AuthApiClient e BookingApiClient passam a herdar da classe base. As assinaturas e o comportamento dos métodos não mudam
  • Motivo: o requests não tem timeout por padrão. Se a API pública travar sem responder, o job do CI fica parado até o limite de 6 horas do GitHub Actions
  • README atualizado na seção de padrões aplicados

Test plan

  • mypy .
  • ruff check .
  • ruff format --check .
  • pytest: 47/47 testes passando (26 cenários BDD contra a API pública e 21 testes unitários), cobertura de api/ e models/ em 100%
  • 3 testes unitários novos em tests/unit/test_base_api_client.py: timeout padrão, timeout personalizado e montagem da URL

Os clients passam a herdar de BaseApiClient, que aplica 5s de limite para conectar e 30s para a resposta em toda requisição. Sem timeout, o requests pode esperar indefinidamente e deixar o CI parado se a API pública travar.
@codecov

codecov Bot commented Oct 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@ThomasTDS
ThomasTDS merged commit bf8f443 into master Oct 2, 2026
5 checks passed
@ThomasTDS
ThomasTDS deleted the feat/timeout-chamadas-http branch October 2, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant