StreamingResponse
通过 HTTP 协议,在单个请求中持续传输数据的方式
Server-Sent Events (SSE)
服务器向客户端推送数据的标准化协议,建立在 HTTP 之上
ref https://developer.mozilla.org/zh-CN/docs/Web/API/Server-sent_events/Using_server-sent_events
对比
特性 | StreamingResponse | Server-Sent Events(SSE) |
---|---|---|
通信方式 | 单次请求的持续响应 | 服务器主动推送,客户端被动接收 |
数据格式 | 自定义,灵活 | 标准化的事件流格式 |
连接特性 | 连接在响应完成后关闭 | 连接持续,服务器可随时推送数据 |
浏览器支持 | 需要手动处理数据解析 | 浏览器原生支持 EventSource 接口 |
适用场景 | 大数据量传输,如文件、媒体流 | 实时数据更新,如通知、消息、行情等 |
nginx 代理配置
# 禁用缓冲
proxy_buffering off; # 默认启用,须设置 off
proxy_cache off; # 默认禁用,可选
# 超时设置
proxy_read_timeout 360s;
proxy_send_timeout 360s;
# 主机头
proxy_set_header Host $host;
重点 proxy_buffering
设置为 off
,不然不能实时输出
ref https://nginx.org/en/docs/http/ngx_http_proxy_module.html