python
runtime_error
ai_generated
true
RuntimeError: The request body has already been consumed.
ID: python/starlette-request-body-already-consumed
80%Fix Rate
86%Confidence
0Evidence
2024-12-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 3.x | active | — | — | — |
Root Cause
在 Starlette 中,多次读取请求体(如先调用 await request.json() 再调用 await request.body())导致流已关闭。
generic中文
在 Starlette 中,多次读取请求体(如先调用 await request.json() 再调用 await request.body())导致流已关闭。
Workarounds
-
95% success
body = await request.body() data = json.loads(body)
-
90% success
data = await request.json() # 如果需要再次使用,保存在变量中
Dead Ends
Common approaches that don't work:
-
90% fail
流已被消费,再次读取会抛出相同错误。
-
80% fail
复制对象不会复制内部流状态,仍然无法读取。