python runtime_error ai_generated true

运行时错误:流已被消费

RuntimeError: Stream consumed

ID: python/starlette-request-body-consume-error

其他格式: JSON · Markdown 中文 · English
80%修复率
84%置信度
0证据数
2025-02-10首次发现

版本兼容性

版本状态引入弃用备注
3.x active

根因分析

在 Starlette 中多次读取请求体,而请求体只能读取一次。

English

在 Starlette 中多次读取请求体,而请求体只能读取一次。

generic

解决方案

  1. 95% 成功率
    在第一次读取后缓存 body,如 request._body = await request.body()
  2. 90% 成功率
    使用中间件一次性读取并将 body 存入 request.state
  3. 85% 成功率
    使用 ASGI 的 receive 包装器缓存请求体

无效尝试

常见但无效的做法:

  1. 80% 失败

    应用再次读取会报错。

  2. 90% 失败

    第二次调用会引发 RuntimeError。

  3. 70% 失败

    不符合 ASGI 规范。