Vremenska ograničenja po fazama i ukupni rok proxy zahtjeva
Odvojite ograničenja po fazama od ukupnog vremenskog budžeta radnje kroz proxy, uključujući ponovne pokušaje i čitanje odgovora.
Vremenska ograničenja za povezivanje i čitanje ograničavaju pojedina čekanja. Ne moraju nužno ograničiti cijelu radnju kroz proxy, koja može uključivati i čekanje u redu, DNS, CONNECT, TLS, preusmjeravanja, ponovne pokušaje i čitanje odgovora.
| Ograničenje | Opseg |
|---|---|
| Ograničenje povezivanja | Uspostavljanje veze prema definiciji klijenta |
| Ograničenje neaktivnosti čitanja | Čekanje bez očekivanog napretka podataka |
| Ukupni rok | Dopušteno trajanje cijele radnje |
Počnite s proračunom radnje
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 njegovo ograničenje 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 proračun.
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 proračun 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 zauzme kapacitet bazena. Zabilježite neuspjelu fazu i proteklo vrijeme; ponovljena čitanja koja napreduju mogu zadovoljiti ograničenja neaktivnosti dok ukupni posao traje predugo.
Rok pristupnika prema uzvodnom dijelu pripada tom pristupniku. Nakon što vrati 504, neiskorišteni klijentski proračun ne može produljiti dovršeni pokušaj. Držite svaki mjerač vremena vezan uz njegova vlasnika kada odlučujete koju postavku treba ispraviti.