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

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

卡卷网8个月前 (03-29)每日看点131

根本原因

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

分享给朋友:

相关文章

电脑c盘哪些文件可以删除?

电脑c盘哪些文件可以删除?

电脑上的文件夹都是英文,很多朋友都不敢乱删,下面这几个文件夹里的文件,你可以放心删除。一、可删除的文件1、Backup这是一个备份文件夹,很多装机软件经常会把需要备份的东西,放在这个文件夹中。而当我们需要的软件正常保存之后,这些东西也就没有...

你有突破100个粉丝了吗?

你有突破100个粉丝了吗?

100粉已经过啦!说说怎么过的吧,最开始疯狂的写回答,写想法,关注人数在50几以下持续有两周多,每天都关注变化,都是个位数增长,后来干脆不看了。到第三周时突然一周增长了100多人,一天十几人,想想应该归功于多互动,给他人点赞评论,让自己曝光...

拼多多,怎么就成为了年轻人的「赛博菜市场」?

拼多多,怎么就成为了年轻人的「赛博菜市场」?

可惜你不在拼多多买水果蔬菜,很难一句话跟你解释,我只能笨拙的用经历来慢慢讲。我们公司有微波炉,同事们几乎都是自己带饭来上班,便当荤素搭配、水果零食;都是好看又好吃。我自己本来就不喜欢外卖,当然也加入了带饭大军: 直到某一天深夜我闲着无聊刷了...

荣耀magic 7 首发的应该都收到货了,感觉怎么样?

8号入手magic7,跟mate40pro比。优点:1、电池真耐用,充电块,华为电池也是新换的但是明显荣耀耐用;2、系统明显快多了,mate40pro下半年开始卡的不行,实在受不了了。3、声音、震动效果提升明显,指纹反应灵敏很多。 缺点:1...

有哪些是你用上了mac才知道的事?

用上了高端的Mac(已退货)才知道:原来文件夹里面的文件,你看到是8个,其实可能有12个。其中3个图标重叠在一起了,另外一个被拖动到屏幕外面了。用上了高端的Mac(已退货)才知道:原来鼠标灵敏度有问题是因为系统内置了鼠标加速度,只能用控制台...

想入个键盘,想买机械的但是太贵,求知友推荐一款手感比较好的薄膜键盘?

想入个键盘,想买机械的但是太贵,求知友推荐一款手感比较好的薄膜键盘?

相信很多接触过286的90后朋友都和我有一样的体会,以前的机械键盘真的是让人头皮发麻,不仅敲击要非常用力,而且很吵。所以后面随着大家的生活消费水平的上升,家家户户都有电脑了,自然也不想再用打字来宣扬自己有电脑的优越感,基本上大家都换成了又轻...

发表评论

访客

看不清,换一张

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