Časové limity nečinnosti proxy počas dlhých HTTP úloh
Zvoľte dopytovanie alebo definovaný formát streamovania, keď dlhá práca servera narazí na limit nečinnosti proxy, namiesto vkladania ľubovoľných bajtov do konečnej odpovede.
Ak služba zostane minúty ticho a proxy vyprší časový limit, zvoľte, čo má klient dostať, predtým ako pridáte bajty srdcového tepu. Predĺženie časovača môže pomôcť jednému čakaniu; zmluva o odpovedi určuje, ktorý pokrok je platný.
| Návrh aplikácie | Zmluva o pokroku |
|---|---|
| Asynchrónna úloha | 202 Accepted s reprezentáciou opisujúcou monitorovanie, po ktorej nasledujú konečné požiadavky na stav a explicitné stavy dokončenia/zlyhania |
| Prúd Server-Sent Events | Content-Type: text/event-stream a záznamy, ktorým klient SSE rozumie |
202 nesľubuje, že úloha uspeje. Pri SSE môže záznam komentára vyzerať takto:
: heartbeat
Dvojbodka z neho robí komentár, nie udalosť aplikácie. Autorské poznámky HTML navrhujú pravidelné komentáre približne každých 15 sekúnd proti niektorému starému správaniu nečinnosti proxy; to je usmernenie, nie univerzálna záruka časového limitu.
Dokončite hlavičky a uistite sa, že aplikácia/serving stack uvoľňuje záznamy namiesto toho, aby ich lokálne ukladal do vyrovnávacej pamäte. Bajty, ktoré ešte neboli odoslané, nemôžu udržať naväzujúceho sprostredkovateľa aktívnym.
Nevkladajte komentáre SSE do bežného JSON alebo binárneho obsahu. HTTP/1.1 chunk s nulovou dĺžkou ukončuje chunked telo, takže to nie je opakovateľný prázdny srdcový tep.
Zachovajte termín operácie a politiku zrušenia. Samotná aktivita prevádzky neukazuje užitočný pokrok úlohy ani platný konečný výsledok.