Timeout per fase e scadenza complessiva della richiesta proxy
Separare i limiti per fase dal budget di tempo totale di un'operazione attraverso un proxy, compresi i tentativi ripetuti e il consumo della risposta.
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.
| Limite | Ambito |
|---|---|
| Timeout di connessione | Stabilimento della connessione secondo la definizione del client |
| Timeout di inattività in lettura | Un'attesa senza il progresso dei dati previsto |
| Scadenza complessiva | Durata 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.