Tarpinių serverių neveiklumo skirtieji laikai ilgų HTTP užduočių metu
Pasirinkite apklausą arba apibrėžtą srauto formatą, kai ilgas serverio darbas pasiekia tarpinio serverio neveiklumo ribą, o ne įterpkite savavališkus baitus į galutinį atsakymą.
Jei paslauga tyli minutes ir tarpiniam serveriui baigiasi laikas, pasirinkite, ką klientas turi gauti prieš pridedant širdies plakimo baitus. Laikmačio pratęsimas gali padėti vienam laukimui; atsakymo sutartis nustato, kokia pažanga galioja.
| Programos dizainas | Pažangos sutartis |
|---|---|
| Asinchroninė užduotis | 202 Accepted su monitoravimą aprašančiu vaizdavimu, po to baigtiniai būsenos užklausimai ir aiškios užbaigimo/nepavykimo būsenos |
| Server-Sent Events srautas | Content-Type: text/event-stream ir įrašai, kuriuos supranta SSE klientas |
202 nežada, kad užduotis pavyks. SSE atveju komentaro įrašas gali atrodyti taip:
: heartbeat
Dvitaškis padaro jį komentaru, o ne programos įvykiu. HTML autorystės pastabos siūlo periodinius komentarus maždaug kas 15 sekundžių prieš tam tikrą seną tarpinių serverių neveiklumo elgesį; tai gairės, o ne universali skirtinio laiko garantija.
Užbaikite antraštes ir užtikrinkite, kad programa/aptarnavimo rietuvė išleistų įrašus, o ne buferiuotų juos vietoje. Dar neišsiųsti baitai negali išlaikyti pasroviui esančio tarpininko aktyvaus.
Neįterpkite SSE komentarų į įprastą JSON ar dvejetainį turinį. HTTP/1.1 nulinio ilgio chunk baigia chunked kūną, todėl tai nėra kartojamas tuščias širdies plakimas.
Išsaugokite operacijos terminą ir atšaukimo politiką. Vien tik srauto aktyvumas neparodo naudingos užduoties pažangos ar galiojančio galutinio rezultato.