在Vercel部署含PyTorch模型的Flask应用出现ERR_OUT_OF_RANGE错误怎么办?
解决Vercel部署Flask+ESRGAN应用的ERR_OUT_OF_RANGE错误
可能的原因及解决方案:
请求体大小超过Vercel限制
Vercel Serverless函数默认限制请求体大小在4.5MB左右,你的图像文件如果超过这个值就会触发ERR_OUT_OF_RANGE: data is too long错误。- 先尝试用小尺寸图像测试,确认是否是大小问题;
- 在
vercel.json中为Python函数添加bodySizeLimit配置,增大允许的请求体上限(最大不超过50MB),示例:{ "version": 2, "builds": [ { "src": "app.py", "use": "@vercel/python", "config": { "bodySizeLimit": "10mb" } } ], "routes": [ { "src": "/(.*)", "dest": "app.py" } ] }
Flask自身未配置大文件支持
本地运行正常可能是因为没触发Flask的默认大小限制,在你的Flask应用中添加以下配置,明确允许的最大文件大小:from flask import Flask app = Flask(__name__) app.config['MAX_CONTENT_LENGTH'] = 10 * 1024 * 1024 # 设置为10MB,和Vercel配置保持一致模型推理的资源限制问题
ESRGAN处理图像时内存占用较高,Vercel Serverless函数默认内存是1GB,若处理大图像时内存溢出,也可能引发类似错误。- 尝试使用轻量化的ESRGAN权重;
- 对输入图像进行分块处理,减少单次推理的内存占用;
- 在
vercel.json中适当调高函数的内存配置(最大可到10GB),示例:{ "version": 2, "builds": [ { "src": "app.py", "use": "@vercel/python", "config": { "memory": 2048, // 2GB内存 "bodySizeLimit": "10mb" } } ], "routes": [ { "src": "/(.*)", "dest": "app.py" } ] }
检查请求传输方式
确保前端上传图像时没有额外的编码导致数据体积异常增大,比如避免重复base64编码,直接使用二进制流传输。
内容的提问来源于stack exchange,提问作者Adi_OS
相关产品推荐
相关产品推荐

