You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让IIS支持SSE?Django+wfastcgi部署后实时推送失效

解决方案

问题核心是wfastcgi默认缓冲输出,必须强制其以流式传输响应才能适配SSE需求,具体操作如下:

  1. 修改web.config,禁用wfastcgi缓冲
    在web.config的<appSettings>节点中添加:
<add key="WSGI_PIPE_TRANSFER_MODE" value="streaming" />

该配置会让wfastcgi实时转发响应内容,而非等待全部生成后再发送。

  1. 优化Django响应头部
    在原有基础上补充两个关键头部,阻止中间层缓冲:
response = StreamingHttpResponse(event_stream(), content_type='text/event-stream')
response['Cache-Control'] = 'no-cache'
response['Connection'] = 'keep-alive'
response['X-Accel-Buffering'] = 'no'

X-Accel-Buffering: no可让IIS识别并禁用响应缓冲。

  1. 检查IIS FastCGI应用程序设置
  • 打开IIS管理器,找到对应站点的FastCGI应用程序
  • 进入编辑界面,在「进程模型」标签下将「快速关闭超时」设为较大值(如300秒),适配SSE长连接
  • 确认「常规」标签下的「启用响应缓冲」未勾选
  1. 临时 workaround:触发最小输出阈值
    若上述配置仍无效,可在每个SSE消息前输出足够长度的空字符,强制FastCGI推送内容:
yield " " * 1024  # 填充数据触发输出
yield f"data: Event {i}:{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n"

内容的提问来源于stack exchange,提问作者yoyo nonoleo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:47:46