python runtime_error ai_generated true

RuntimeError: Stream consumed

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

Also available as: JSON · Markdown · 中文
80%Fix Rate
84%Confidence
0Evidence
2025-02-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.x active

Root Cause

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

generic

中文

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

Workarounds

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

Dead Ends

Common approaches that don't work:

  1. 80% fail

    应用再次读取会报错。

  2. 90% fail

    第二次调用会引发 RuntimeError。

  3. 70% fail

    不符合 ASGI 规范。