starlette 支持设置 http 请求体的总大小上限,不过默认状态下这项限制是关闭的。截至 2026 年 11 月 2 日,官方应用与路由文档标注的 max_body_size 默认值仍为 none,也就是不限制请求体大小。只升级框架版本,并不意味着应用会自动获得上传容量上限。
这个参数按原始请求体的字节总量计数,文件数据和 multipart 编码开销都算在内。它不等于单个上传文件的大小上限;同一请求里的多个文件、普通字段会合并计入。参数接受非负值,单位为字节。

来源:Starlette 官方文档
限额也可以配置到 Router、Mount 和具体路由。路由匹配完成后,内层声明的额度能够覆盖外层上限。官方示例给应用设置较小的额度,再单独给上传路由设置更大的值,说明同一服务的不同入口不必共用一个限额。
路由级覆盖有执行顺序。应用级中间件先于路由运行;若中间件已经读取请求体,这些字节会先受应用级限额约束,不能等到命中上传路由后再放宽。官方提醒,项目中存在提前读取请求体的中间件时,应用级额度应容纳合法路由的最大需求。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
校验并不只看 Content-Length。这个请求头能用于提前拒绝明显超额的请求,但框架仍会统计从 ASGI 服务器实际接收到的请求体字节。没有长度头的请求同样受计数约束,低报长度也无法据此绕过上限。官方中间件文档列出的超额响应为 HTTP 413。

来源:Starlette 官方文档
表单解析器自带的限额是另一层机制。request.form() 默认分别允许最多 1000 个文件、1000 个普通字段,max_part_size 默认为 1 MiB(1024×1024 字节),限制的是非文件字段。上传文件会转存到临时存储,不受这个单字段参数约束;控制完整请求的大小,仍需使用总请求体限额。
这些层级的区别分别写在路由文档、限额中间件说明及请求文件文档中。对提供上传入口的应用,参数默认值、读取顺序和额度层级都会影响校验结果。官方还建议结合反向代理的请求体上限、临时存储配额,框架内的一个数值无法覆盖所有部署资源。


















