I timeout di connessione e di lettura limitano attese specifiche. Non limitano necessariamente un'intera operazione attraverso un proxy, che può includere anche attesa in coda, DNS, CONNECT, TLS, reindirizzamenti, tentativi ripetuti e consumo della risposta.

LimiteAmbito
Timeout di connessioneStabilimento della connessione secondo la definizione del client
Timeout di inattività in letturaUn'attesa senza il progresso dei dati previsto
Scadenza complessivaDurata consentita dell'operazione completa

Partite dal budget dell'operazione

Usate la scadenza complessiva documentata del client o il suo meccanismo di annullamento quando disponibile, insieme ai limiti di fase. HTTPX separa le attese di pool, connessione, lettura e scrittura. Requests dichiara che il proprio timeout non è un limite di download completo. curl offre un timeout di trasferimento totale.

Per esempio, un'attività di venti secondi spende due secondi in coda, tre a stabilire il proprio percorso e sei in uno scambio fallito. Al tentativo successivo restano circa nove secondi. Dare a ogni nuovo tentativo venti secondi freschi butterebbe via il budget originale.

Usate un orologio monotono per contabilizzare il tempo trascorso. Trasportate una scadenza assoluta o la durata rimanente attraverso gli strati che possiedono il lavoro. Se il meccanismo di annullamento circostante non può imporre l'ambito richiesto, rendete esplicito tale limite.

Includete il corpo e la pulizia

Un metodo che ritorna dopo le intestazioni può lasciare la lettura del corpo fuori dalla propria scadenza. Decidete se il budget copre lo stabilimento, un download finito completo o un flusso di lunga durata con regole di vitalità separate. Un esempio moderno in .NET per annullare intestazioni e corpo porta un solo token attraverso entrambe le fasi.

Lasciate tempo per chiudere le risposte e completare l'annullamento prima che un tentativo successivo occupi capacità del pool. Registrate la fase fallita e il tempo trascorso; letture ripetute che avanzano possono soddisfare i limiti di inattività mentre l'attività complessiva dura troppo.

La scadenza di un gateway verso monte appartiene a quel gateway. Una volta che restituisce 504, il budget client inutilizzato non può estendere il tentativo completato. Tenete ogni timer legato al suo proprietario quando decidete quale impostazione correggere.

Articoli correlati