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

Flask返回超64KB响应被截断 如何调整JSON响应大小上限?

Flask响应超过64KB被截断的解决方法

Flask本身没有内置64KB的响应大小限制,出现截断基本是部署链路的缓冲、传输配置问题,按以下场景排查调整即可:

  • 前置反向代理导致的截断(最常见)
    64KB刚好是Nginx等反向代理的默认代理缓冲总阈值(默认配置为8个8KB的缓冲块,总大小64KB),缓冲写满时就会截断未返回完的响应。Flask侧不需要修改框架全局配置,只需要给对应接口的响应加禁止代理缓冲的头即可,修改后的代码参考:
    from flask import after_this_request
    
    @app.route('/getfoldercontent')
    def getfoldercontent():
        content = get_folder_content_metadata(request.args.get('arg1'), request.args.get('arg2'))
        if content is None:
            res = "Not found"
            rsp_code = 404
        else:
            res = jsonify(content)
            rsp_code = 200
    
        @after_this_request
        def set_no_proxy_buffering(response):
            # 通知Nginx类反向代理不要缓冲当前响应,直接透传
            response.headers['X-Accel-Buffering'] = 'no'
            # 兼容其他代理、CDN节点的缓冲控制
            response.headers['Cache-Control'] = 'no-cache'
            return response
    
        return res, rsp_code
    
  • 直接用Flask开发服务器运行时出现截断
    先检查是否启用了flask-compress这类响应压缩扩展,这类扩展会对超过体积阈值的响应做Gzip压缩,部分旧版本存在压缩逻辑bug会导致内容截断,升级对应扩展版本,或者临时关闭压缩即可定位问题。
  • WSGI容器配置问题
    如果是用Gunicorn、uWSGI这类容器部署,检查容器的响应缓冲参数:比如Gunicorn的--buffer-size参数默认值为4096字节,部分定制版本可能将阈值设为64KB,启动时调大该参数即可,例如执行gunicorn --buffer-size=655360 main:app将缓冲上限调整为640KB。

注意:不要修改MAX_CONTENT_LENGTH配置,这个参数是用来限制客户端上传的请求体大小的,对服务端返回的响应体积没有任何约束,改了也解决不了截断问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:48:18