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

本地正常但WSGI服务器上返回生成器功能失效问题求助

解决Flask在PythonAnywhere上流式响应延迟失效的问题

问题根源

本地Flask开发服务器会自动把生成器转为流式响应,但PythonAnywhere用的生产级WSGI服务器(如uWSGI)要求必须返回Response实例,且默认会缓冲全部响应内容,导致直接包装生成器时,延迟输出的效果消失。

可行解决方案

用Response包装生成器,同时开启direct_passthrough=True参数禁用响应缓冲,配合正确的MIME类型设置:

from flask import Flask, Response
from time import sleep

app = Flask(__name__)

def generator():
    for _ in range(5):
        yield "test\n"  # 加换行让curl能实时输出,按需调整
        sleep(0.5)

@app.route('/', methods=["GET","POST"])
def index():
    return Response(
        generator(),
        mimetype='text/plain',
        direct_passthrough=True
    )

关键细节说明

  • direct_passthrough=True:强制Flask不缓冲生成器输出,每执行一次yield就把内容立即传给服务器,保留间隔延迟的效果。
  • 换行符作用:示例里的\n是为了让curl这类客户端实时打印每段内容,避免因等待缓冲满才输出的情况,非必须,可根据客户端需求调整。
  • 分块传输:Response会自动添加Transfer-Encoding: chunked响应头,让服务器以分块方式发送内容,符合流式响应的标准规范。

内容的提问来源于stack exchange,提问作者No Name

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:32:10