🐛 Fix: 修复 aiohttp 流式响应分块大小不固定问题 (#3919)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
keep_running
2026-03-27 11:28:05 +08:00
committed by GitHub
parent 4f1c590ee9
commit eea5257394
2 changed files with 57 additions and 1 deletions

View File

@@ -191,11 +191,26 @@ class Session(HTTPClientSession):
timeout=timeout,
) as response:
response_headers = response.headers.copy()
# aiohttp does not guarantee fixed-size chunks; re-chunk to exact size
buffer = bytearray()
async for chunk in response.content.iter_chunked(chunk_size):
if not chunk:
continue
buffer.extend(chunk)
while len(buffer) >= chunk_size:
out = bytes(buffer[:chunk_size])
del buffer[:chunk_size]
yield Response(
response.status,
headers=response_headers,
content=out,
request=setup,
)
if buffer:
yield Response(
response.status,
headers=response_headers,
content=chunk,
content=bytes(buffer),
request=setup,
)