python
runtime_error
ai_generated
true
运行时错误:请求体已被消费。
RuntimeError: The request body has already been consumed.
ID: python/starlette-request-body-already-consumed
80%修复率
86%置信度
0证据数
2024-12-01首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.x | active | — | — | — |
根因分析
在 Starlette 中,多次读取请求体(如先调用 await request.json() 再调用 await request.body())导致流已关闭。
English
在 Starlette 中,多次读取请求体(如先调用 await request.json() 再调用 await request.body())导致流已关闭。
解决方案
-
95% 成功率
body = await request.body() data = json.loads(body)
-
90% 成功率
data = await request.json() # 如果需要再次使用,保存在变量中
无效尝试
常见但无效的做法:
-
90% 失败
流已被消费,再次读取会抛出相同错误。
-
80% 失败
复制对象不会复制内部流状态,仍然无法读取。