Senaktivecaj tempolimoj de prokuriloj dum longaj HTTP-taskoj
Elektu enketadon aŭ difinitan streaming-formaton kiam longa servila laboro renkontas la senaktivecan limon de prokurilo, anstataŭ enmeti arbitrajn bajtojn en la finan respondon.
Se servo restas silenta dum minutoj kaj prokurilo tempolimas, elektu, kion la kliento ricevu antaŭ ol aldoni korobatojn. Plilongigo de tempigilo povas helpi unu atendo; la responda kontrakto determinas, kiu progreso validas.
| Aplika dezajno | Progresa kontrakto |
|---|---|
| Asinkrona tasko | 202 Accepted kun reprezento priskribanta monitoradon, sekvata de finhavaj statpetoj kaj eksplicitaj kompletigo/malsukcesaj statoj |
| Server-Sent Events-fluo | Content-Type: text/event-stream kaj rikordoj, kiujn la SSE-kliento komprenas |
202 ne promesas, ke la tasko sukcesos. Por SSE, komenta rikordo povas aspekti tiel:
: heartbeat
La dupunkto faras ĝin komento anstataŭ aplika evento. La aŭtoraj notoj de HTML sugestas periodajn komentojn proksimume ĉiujn 15 sekundojn kontraŭ iu malnova senaktiveca konduto de prokuriloj; tio estas gvidilo, ne universala tempolima garantio.
Finu la kapliniojn kaj certigu, ke la aplikaĵo/servada stako liberigas rikordojn anstataŭ bufri ilin loke. Bajtoj ankoraŭ ne senditaj ne povas teni malsupran peranton aktiva.
Ne enmetu SSE-komentojn en ordinaran JSON aŭ duuman enhavon. HTTP/1.1 nulo-longa chunk finas chunked-korpon, do ĝi ne estas ripetebla malplena korobato.
Konservu operacian limdaton kaj nuligan politikon. Nur trafika aktiveco ne montras utilan taskan progreson aŭ validan finan rezulton.