Os prazos de conexión e lectura limitan esperas concretas. Non limitan necesariamente toda unha operación a través de proxy, que tamén pode incluír espera en cola, DNS, CONNECT, TLS, redireccións, reintentos e consumo da resposta.

LímiteAlcance
Prazo de conexiónEstablecemento da conexión segundo a definición do cliente
Prazo de inactividade de lecturaUnha espera sen o progreso de datos agardado
Prazo totalDuración permitida da operación completa

Comece polo orzamento da operación

Use o prazo total documentado do cliente ou o seu mecanismo de cancelación cando exista, xunto cos límites de fase. HTTPX separa as esperas de pozo, conexión, lectura e escritura. Requests indica que o seu prazo non é un límite de descarga completa. curl ofrece un prazo de transferencia total.

Por exemplo, unha tarefa de vinte segundos pasa dous segundos en cola, tres establecendo a súa ruta e seis nun intercambio infrutuoso. Ao seu seguinte intento quedan uns nove segundos. Darlle a cada reintento vinte segundos novos desbotaría o orzamento orixinal.

Empregue un reloxo monotónico para contabilizar o tempo transcorrido. Leve un prazo absoluto ou a duración restante polas capas que posúen o traballo. Se o mecanismo de cancelación circundante non pode impoñer o alcance requirido, faga explícita esa limitación.

Inclúa o corpo e a limpeza

Un método que retorna despois das cabeceiras pode deixar a lectura do corpo fóra do seu prazo. Decida se o orzamento cobre o establecemento, unha descarga completa finita ou un fluxo de longa duración con regras de vitalidade separadas. Un exemplo moderno en .NET para cancelar cabeceiras e corpo leva un só token polas dúas etapas.

Deixe tempo para pechar as respostas e completar a cancelación antes de que un intento seguinte ocupe capacidade do pozo. Rexistre a fase fallida e o tempo transcorrido; as lecturas repetidas que avanzan poden satisfacer os límites de inactividade mentres a tarefa total dura demasiado.

O prazo da pasarela cara á orixe pertence a esa pasarela. Unha vez que devolve 504, o orzamento de cliente non usado non pode estender o intento completado. Manteña cada temporizador ligado ao seu propietario ao decidir que parámetro hai que corrixir.

Artigos relacionados