Tidsgränser för anslutning och läsning begränsar särskilda väntetider. De begränsar inte nödvändigtvis en hel proxyoperation, som också kan omfatta kö, DNS, CONNECT, TLS, omdirigeringar, nya försök och läsning av svaret.

GränsOmfattning
Tidsgräns för anslutningUpprättande av anslutning enligt klientens definition
Tidsgräns för läsainaktivitetEn väntan utan förväntad dataframgång
Sammanlagd tidsgränsTillåten varaktighet för hela operationen

Börja med operationens budget

Använd klientens dokumenterade sammanlagda tidsgräns eller avbrytandemekanism där den finns, tillsammans med fasgränserna. HTTPX skiljer väntetider för pool, anslutning, läsning och skrivning. Requests anger att dess tidsgräns inte är en gräns för fullständig nedladdning. curl erbjuder en sammanlagd överföringstidsgräns.

Till exempel använder ett jobb på tjugo sekunder två sekunder i kö, tre för att bygga sin väg och sex på ett misslyckat utbyte. Nästa försök har ungefär nio sekunder kvar. Att ge varje nytt försök tjugo färska sekunder skulle kasta bort den ursprungliga budgeten.

Använd en monoton klocka för att räkna ut förfluten tid. Bär en absolut tidsgräns eller återstående varaktighet genom de lager som äger arbetet. Om en omgivande avbrytandemekanism inte kan genomdriva den nödvändiga omfattningen, gör den begränsningen explicit.

Ta med kroppen och städningen

En metod som återvänder efter huvudena kan lämna läsning av kroppen utanför sin tidsgräns. Avgör om budgeten täcker upprättande, en hel ändlig nedladdning eller en långvarig ström med egna livskraftighetsregler. Ett modernt .NET-exempel för avbrott av huvuden och kropp bär en token genom båda faserna.

Lämna tid att stänga svar och slutföra avbrottet innan ett nästa försök tar poolkapacitet. Registrera fasen som misslyckades och förfluten tid; upprepade läsningar med framsteg kan uppfylla inaktivitetsgränserna medan det sammanlagda jobbet tar för lång tid.

Tidsgränsen för en gateway mot uppströmmen tillhör den gatewayen. När den returnerar 504 kan outnyttjad klientbudget inte förlänga det avslutade försöket. Håll varje timer knuten till sin ägare när du avgör vilken inställning som behöver rättas.

Relaterade artiklar