当前位置:首页 > 每日看点 > 正文内容

如何使用flask完成数据传输?

卡卷网12个月前 (03-29)每日看点190

根本原因

IIS 的 FastCGI 模块默认启用响应缓冲(Response Buffering),会强制等待 Flask 返回完整 HTTP 响应后再发送给客户端,导致以下问题:

  • 流式数据被缓存:Flask 的 text/event-stream 流式响应被 IIS 拦截并缓存,无法实时逐字输出
  • HTTP协议配置冲突:FastCGI 默认不支持分块传输编码(Chunked Transfer Encoding)

解决方案

1. 禁用 FastCGI 响应缓冲 通过修改 IIS 的 FastCGI 配置禁用缓冲:

1. 打开 IIS 管理器

2. 进入 FastCGI 设置(服务器节点 → FastCGI 设置)

如何使用flask完成数据传输?  第1张

在这里插入图片描述

3. 找到 Python 的 FastCGI 应用(如 wfastcgi.py

如何使用flask完成数据传输?  第2张

在这里插入图片描述

4. 添加以下环境变量:

Name: WSGI_BUFFERING
Value: 0

2. 配置 Flask 响应头app.py 的流式响应中添加防缓存头:

@app.route('/api/ask', methods=['POST']) def ask(): # ...原有代码... return Response( generate(), mimetype='text/event-stream', headers={ 'Cache-Control': 'no-cache', 'X-Accel-Buffering': 'no' # 强制禁用 Nginx/IIS 缓冲 } )

3. 禁用 IIS 动态压缩 动态内容压缩会强制缓冲数据:

1. 进入 IIS 管理器

2. 打开 压缩 功能

如何使用flask完成数据传输?  第3张

在这里插入图片描述

3. 取消勾选 启用动态内容压缩

如何使用flask完成数据传输?  第4张

在这里插入图片描述

4. 验证 MIME 类型

确保 IIS 允许 text/event-stream 类型:

1. 打开 IIS 管理器

如何使用flask完成数据传输?  第5张

在这里插入图片描述

2. 进入 MIME 类型 设置

如何使用flask完成数据传输?  第6张

在这里插入图片描述

3. 添加以下类型:

扩展名: .*
MIME 类型: text/event-stream

备选方案

如果仍不生效,可改用反向代理模式:

1. 使用 WaitressCherryPy 作为生产服务器运行 Flask:

pip install waitress waitress-serve --port=5000 app:app

2. 在 IIS 中配置 URL 重写 规则,将请求反向代理到 http://localhost:5000

验证步骤

  1. 重启 IIS 服务(或应用程序池)
  2. 使用浏览器开发者工具检查响应头:
http HTTP/1.1 200 OK
Content-Type: text/event-stream
Cache-Control: no-cache
X-Accel-Buffering: no
Transfer-Encoding: chunked # 确保启用分块传输

3. 观察前端是否实时接收流式数据

完成上述步骤后,逐字输出效果应恢复正常。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/03/12059.html

分享给朋友:

相关文章

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

最近一个月各大手机厂商的旗舰机扎堆发布,不知道大家看爽了没?这一代的性能续航大提升,最低 3599 元就能买到,同时老款也有不小的降幅,今年双 11 算是相当适合换手机的节点了!这次,小黑就给大家推荐双 11 期间值得购买的手机...150...

到什么程度才叫精通 Linux?

我们医院有个大牛。有一次,我的Linux电脑下载了Microsoft office 365 不能运行。于是买了2.5升装康师傅冰红茶找到大牛,让他帮忙解决。大牛白了我一眼,让我把安装包发给他,只见他输入一个命令将安装包打开,整个屏幕都是数字...

数字人民币为什么又不火了?

我完全不懂行。我一开始以为,数字人民币,是对我银行里的每一分钱,都赋予一个独一无二的数字编码。我要用一块钱买矿泉水,它就从我的存款中随机选取一百个一分钱,组合成一块钱,支付给商家。我花一百块钱吃饭,它就随机选取一万个一分钱,组合成一百块钱,...

拼多多百亿补贴买手机电脑等数码产品靠谱吗?

大家很多人都在问pdd百亿补贴购机靠谱吗?首先声明一下,我不是pdd的人,我只是一个普普通通混迹从事pc行业的数码玩家,我只是在评论区看到很多人都在无脑推百亿补贴,特地发一条怗子来说明一下这个东西。此怡不存在偏向引导,此站仅站在我个人角度上...

华为纯血鸿蒙,从此天下三分了吗?

华为纯血鸿蒙,从此天下三分了吗?

万众期待的纯血版 HarmonyOS NEXT 终于是端上来了,主打一个自研,从里到外,从内核到架构,都是自研。用户的激情已经被点燃,可见大家对于纯血鸿蒙的期待,但是鸿蒙系统能不能真正与安卓、iOS三分天下呢?目前来说,还为时过早。iOS和...

领导给我介绍了私活,挣了3W。该给领导分多少合适呢?

你看,这就是网络的好处了。这种问题,你去问亲戚朋友,一大帮子人有一大帮子说法,还不排除有人眼红故意坑你瞎出主意。你这隔网上一问,大家素昧平生,反而因为想骗个赞跟你使出浑身解数来出主意。多好你看。其实这事道理很简单。人脉是人家的,活是你干的。...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。