Os limites de tempo de ligação e de leitura limitam esperas específicas. Não limitam necessariamente toda uma operação através de proxy, que também pode incluir espera em fila, DNS, CONNECT, TLS, redirecionamentos, novas tentativas e leitura da resposta.

LimiteÂmbito
Limite de ligaçãoEstabelecimento da ligação segundo a definição do cliente
Limite de inatividade de leituraUma espera sem o progresso de dados esperado
Prazo totalDuração permitida da operação completa

Comece pelo orçamento da operação

Use o prazo total documentado do cliente ou o mecanismo de cancelamento quando existir, a par dos limites de fase. O HTTPX separa as esperas de pool, ligação, leitura e escrita. O Requests declara que o seu limite não é um limite de transferência completa. O curl fornece um prazo de transferência total.

Por exemplo, uma tarefa de vinte segundos passa dois segundos em fila, três a estabelecer a sua rota e seis numa troca falhada. À tentativa seguinte restam cerca de nove segundos. Dar vinte segundos frescos a cada nova tentativa descartaria o orçamento original.

Utilize um relógio monotónico para contabilizar o tempo decorrido. Transporte um prazo absoluto ou a duração restante pelas camadas que detêm o trabalho. Se o mecanismo de cancelamento circundante não conseguir impor o âmbito necessário, torne essa limitação explícita.

Inclua o corpo e a limpeza

Um método que retorna após os cabeçalhos pode deixar a leitura do corpo fora do seu prazo. Decida se o orçamento cobre o estabelecimento, uma transferência completa finita ou um fluxo de longa duração com regras de vitalidade separadas. Um exemplo moderno em .NET para cancelar cabeçalhos e corpo transporta um único token pelas duas fases.

Deixe tempo para fechar respostas e concluir o cancelamento antes de uma nova tentativa ocupar capacidade do pool. Registe a fase falhada e o tempo decorrido; leituras repetidas que avançam podem satisfazer os limites de inatividade enquanto a tarefa total dura demasiado.

O prazo do gateway para montante pertence a esse gateway. Depois de devolver 504, o orçamento de cliente não utilizado não pode prolongar a tentativa concluída. Mantenha cada temporizador ligado ao seu proprietário ao decidir que definição deve ser corrigida.

Artigos relacionados