python runtime_error ai_generated true

运行时错误:请求被消费后,请求体不可用

RuntimeError: Request body is not available after the request has been consumed

ID: python/starlette-request-body-unavailable

其他格式: JSON · Markdown 中文 · English
80%修复率
86%置信度
0证据数
2024-09-30首次发现

版本兼容性

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

根因分析

在 Starlette 中多次读取请求体,例如在中间件和端点中,但流只能读一次。

English

在 Starlette 中多次读取请求体,例如在中间件和端点中,但流只能读一次。

generic

解决方案

  1. 85% 成功率
    body = await request.body(); request._body = body 然后后续使用 request._body
  2. 95% 成功率
    确保只调用一次 await request.json() 或 body()

无效尝试

常见但无效的做法:

  1. 100% 失败

    流已被读取,第二次调用会报错。

  2. 80% 失败

    会导致并发问题。