You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

asyncio流与同步流向客户端输出JSON的差异及报错排查

错误原因

你编写的asyncio侧代码完全缺失了HTTP协议要求的响应头和头体分隔符,客户端收到的只有纯JSON字符串,不符合HTTP响应格式规范,因此无法解析。

同步侧的代码完整遵循了HTTP响应的结构要求,按顺序发送了四个部分的内容:

  • HTTP状态行:HTTP/1.1 200 OK
  • 响应头字段:Content-Type: application/json、Connection: close
  • 头体分隔符:两个连续的换行\n\n,标识响应头结束、响应体开始
  • JSON格式的响应体内容

而asyncio侧的代码跳过了前三个HTTP协议必要部分,直接发送响应体,自然会导致客户端读取失败。另外还要注意asyncio.StreamWriter.write()方法接收的是bytes类型参数,直接传入字符串会抛出类型错误。


修正后的asyncio代码

import ujson

# 先发送HTTP响应头和分隔符
swriter.write(b"HTTP/1.1 200 OK\n")
swriter.write(b"Content-Type: application/json\n")
swriter.write(b"Connection: close\n\n")
# 发送JSON响应体,注意要编码为bytes
swriter.write(ujson.dumps(response).encode("utf-8"))
await swriter.drain()
# 关闭连接,匹配Connection: close的语义
swriter.close()
await swriter.wait_closed()

内容的提问来源于stack exchange,提问作者srinivasa rao pedada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:12:00