Časové limity pripojenia a čítania obmedzujú konkrétne čakania. Nemusia nevyhnutne obmedzovať celú operáciu cez proxy, ktorá môže zahŕňať aj čakanie v rade, DNS, CONNECT, TLS, presmerovania, opakované pokusy a čítanie odpovede.

ObmedzenieRozsah
Limit pripojeniaNadviazanie spojenia podľa definície klienta
Limit nečinnosti čítaniaČakanie bez očakávaného postupu údajov
Celkový termínPovolené trvanie celej operácie

Začnite rozpočtom operácie

Použite zdokumentovaný celkový termín klienta alebo mechanizmus zrušenia, ak je k dispozícii, spolu s fázovými limitmi. HTTPX oddeľuje čakania na fond, pripojenie, čítanie a zápis. Requests uvádza, že jeho limit nie je obmedzením úplného stiahnutia. curl ponúka termín celkového prenosu.

Napríklad dvadsaťsekundová úloha strávi dve sekundy v rade, tri nadviazaním trasy a šesť neúspešnou výmenou. Jej ďalší pokus má približne deväť sekúnd. Dať každému opakovanému pokusu čerstvých dvadsať sekúnd by zahodilo pôvodný rozpočet.

Na účtovanie uplynutého času používajte monotónne hodiny. Prenášajte absolútny termín alebo zostávajúce trvanie cez vrstvy, ktoré prácu vlastnia. Ak okolitý mechanizmus zrušenia nedokáže vynútiť požadovaný rozsah, tento limit výslovne uveďte.

Zahrňte telo a upratovanie

Metóda, ktorá sa vráti po hlavičkách, môže nechať čítanie tela mimo svojho termínu. Rozhodnite, či rozpočet pokrýva nadviazanie, celé konečné stiahnutie alebo dlhotrvajúci tok s oddelenými pravidlami životnosti. Moderný príklad .NET na zrušenie hlavičiek a tela nesie jeden token oboma fázami.

Nechajte čas na zatvorenie odpovedí a dokončenie zrušenia, kým ďalší pokus nezaujme kapacitu fondu. Zaznamenajte neúspešnú fázu a uplynutý čas; opakované čítania s postupom môžu splniť limity nečinnosti, kým celá úloha trvá pridlho.

Termín brány voči nadradenej strane patrí tejto bráne. Keď vráti 504, nevyužitý rozpočet klienta nemôže predĺžiť dokončený pokus. Pri rozhodovaní, ktoré nastavenie treba opraviť, držte každý časovač pri jeho vlastníkovi.

Súvisiace články