Skip to content

fix(api_client): nao repetir POST /nfse e adicionar backoff - #2

Open
marvinrez wants to merge 1 commit into
danielcarletti:mainfrom
marvinrez:fix/no-retry-on-post
Open

fix(api_client): nao repetir POST /nfse e adicionar backoff#2
marvinrez wants to merge 1 commit into
danielcarletti:mainfrom
marvinrez:fix/no-retry-on-post

Conversation

@marvinrez

Copy link
Copy Markdown

O laco de retry em _request repetia qualquer metodo diante de qualquer requests.RequestException. Acontece que essa excecao nao distingue "nao chegou ao servidor" de "chegou, foi processada, e a resposta se perdeu na volta" - ReadTimeout e conexao encerrada cobrem os dois casos.

No segundo caso, repetir o POST /nfse emite a mesma nota outra vez. Com o padrao retries: 1 sao duas emissoes; com o maximo permitido, seis. O custo nao e uma requisicao perdida: e uma NFS-e a mais, com numero de DPS ja consumido e cancelamento manual pela frente.

POST passa a ir uma vez so. GET, HEAD e OPTIONS continuam sendo repetidos ate request.retries, agora com backoff exponencial em vez de reenvio imediato.

Quatro testes cobrem POST nao repetido quando a resposta se perde, GET e HEAD repetidos ate o limite, e POST bem-sucedido inalterado.

O laco de retry em _request repetia qualquer metodo diante de qualquer
requests.RequestException. Acontece que essa excecao nao distingue "nao chegou
ao servidor" de "chegou, foi processada, e a resposta se perdeu na volta" -
ReadTimeout e conexao encerrada cobrem os dois casos.

No segundo caso, repetir o POST /nfse emite a mesma nota outra vez. Com o
padrao retries: 1 sao duas emissoes; com o maximo permitido, seis. O custo nao
e uma requisicao perdida: e uma NFS-e a mais, com numero de DPS ja consumido e
cancelamento manual pela frente.

POST passa a ir uma vez so. GET, HEAD e OPTIONS continuam sendo repetidos ate
request.retries, agora com backoff exponencial em vez de reenvio imediato.

Quatro testes cobrem POST nao repetido quando a resposta se perde, GET e HEAD
repetidos ate o limite, e POST bem-sucedido inalterado.

Co-Authored-By: Claude <noreply@anthropic.com>
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.

2 participants