Изтичане на времето за бездействие на прокси при дълги HTTP задачи
Изберете анкетиране или определен формат за поточно предаване, когато дългата сървърна работа срещне лимита за бездействие на прокси, вместо да вмъквате произволни байтове в крайния отговор.
Ако услуга остане безмълвна с минути и прокси изтече по време, изберете какво трябва да получи клиентът, преди да добавите байтове за пулс. Удължаването на таймер може да помогне на едно изчакване; договорът за отговор определя кой напредък е валиден.
| Дизайн на приложението | Договор за напредък |
|---|---|
| Асинхронна задача | 202 Accepted с представяне, описващо наблюдението, последвано от ограничени заявки за статус и явни състояния на завършване/неуспех |
| Поток Server-Sent Events | Content-Type: text/event-stream и записи, които SSE клиентът разбира |
202 не обещава, че задачата ще успее. За SSE записът за коментар може да изглежда така:
: heartbeat
Двоеточието го прави коментар, а не събитие на приложението. Бележките на HTML за авторство предлагат периодични коментари приблизително на всеки 15 секунди срещу някои стари поведения на бездействие на прокси; това е указание, а не универсална гаранция за изтичане.
Завършете заглавките и се уверете, че приложението/стекът за обслужване освобождава записите, вместо да ги буферира локално. Все още неизпратените байтове не могат да поддържат долен посредник активен.
Не вмъквайте SSE коментари в обикновено JSON или двоично съдържание. HTTP/1.1 блок с нулева дължина завършва chunked тяло, така че не е повторяем празен пулс.
Запазете краен срок за операцията и политика за отказ. Само активността на трафика не показва полезен напредък на задачата или валиден краен резултат.