긴 HTTP 작업 중 프록시 유휴 시간 초과
긴 서버 작업이 프록시의 유휴 한도에 도달하면 최종 응답에 임의의 바이트를 삽입하는 대신 폴링이나 정의된 스트리밍 형식을 선택하세요.
서비스가 몇 분간 조용하고 프록시가 시간 초과되면, 하트비트 바이트를 추가하기 전에 클라이언트가 무엇을 받아야 하는지 선택하세요. 타이머를 연장하면 한 번의 대기에 도움이 될 수 있습니다. 어떤 진행이 유효한지는 응답 계약이 결정합니다.
| 애플리케이션 설계 | 진행 계약 |
|---|---|
| 비동기 작업 | 모니터링을 설명하는 표현이 포함된 202 Accepted, 이어서 유한한 상태 요청과 명시적인 완료/실패 상태 |
| Server-Sent Events 스트림 | Content-Type: text/event-stream 및 SSE 클라이언트가 이해하는 레코드 |
202는 작업이 성공한다고 약속하지 않습니다. SSE의 경우 주석 레코드는 다음과 같을 수 있습니다:
: heartbeat
콜론은 이를 애플리케이션 이벤트가 아닌 주석으로 만듭니다. HTML의 작성 노트는 일부 오래된 프록시 유휴 동작에 대항해 약 15초마다 주기적 주석을 제안합니다. 이는 지침일 뿐 보편적인 시간 초과 보장은 아닙니다.
헤더를 마무리하고 애플리케이션/서빙 스택이 레코드를 로컬에 버퍼링하는 대신 해제하도록 하세요. 아직 전송되지 않은 바이트는 다운스트림 중개자를 활성 상태로 유지할 수 없습니다.
일반 JSON이나 바이너리 콘텐츠에 SSE 주석을 삽입하지 마세요. HTTP/1.1의 길이 0 청크는 chunked 본문을 끝내므로 반복 가능한 빈 하트비트가 아닙니다.
작업 기한과 취소 정책을 유지하세요. 트래픽 활동만으로는 유용한 작업 진행이나 유효한 최종 결과를 보여 주지 않습니다.