Vremenski limiti za povezivanje i čitanje ograničavaju pojedina čekanja. Ne moraju nužno ograničiti cijelu operaciju kroz proxy, koja može uključivati i čekanje u redu, DNS, CONNECT, TLS, preusmjeravanja, ponovne pokušaje i čitanje odgovora.

OgraničenjeOpseg
Limit povezivanjaUspostavljanje veze prema definiciji klijenta
Limit neaktivnosti čitanjaČekanje bez očekivanog napretka podataka
Ukupni rokDopušteno trajanje cijele operacije

Počnite s budžetom operacije

Koristite dokumentirani ukupni rok klijenta ili mehanizam otkazivanja kada postoji, uz ograničenja po fazama. HTTPX odvaja čekanja na bazen, povezivanje, čitanje i pisanje. Requests navodi da njegov limit nije ograničenje cjelovitog preuzimanja. curl pruža rok za ukupni prijenos.

Na primjer, posao od dvadeset sekundi troši dvije sekunde na red, tri na uspostavljanje rute i šest na neuspjelu razmjenu. Njegov sljedeći pokušaj ima otprilike devet sekundi. Davanje svakom ponovnom pokušaju novih dvadeset sekundi odbacilo bi izvorni budžet.

Koristite monotoni sat za obračun proteklog vremena. Prenosite apsolutni rok ili preostalo trajanje kroz slojeve koji posjeduju posao. Ako okolni mehanizam otkazivanja ne može nametnuti potreban opseg, učinite to ograničenje izričitim.

Uključite tijelo i čišćenje

Metoda koja se vraća nakon zaglavlja može ostaviti čitanje tijela izvan svog roka. Odlučite pokriva li budžet uspostavljanje, cjelovito konačno preuzimanje ili dugotrajni tok s odvojenim pravilima živosti. Suvremeni .NET primjer otkazivanja zaglavlja i tijela nosi jedan token kroz oba stupnja.

Ostavite vremena za zatvaranje odgovora i dovršetak otkazivanja prije nego sljedeći pokušaj uzme kapacitet bazena. Zabilježite neuspjelu fazu i proteklo vrijeme; ponovljena čitanja koja napreduju mogu zadovoljiti limite neaktivnosti dok ukupni posao traje predugo.

Rok pristupnika prema uzvodnom dijelu pripada tom pristupniku. Nakon što vrati 504, neiskorišteni klijentski budžet ne može produljiti dovršeni pokušaj. Držite svaki mjerač vremena vezan uz njegova vlasnika kada odlučujete koju postavku treba ispraviti.

Povezani članci