踩坑记:gRPC 异常响应

本文记录了一次排查gRPC服务异常响应的问题,客户端收到None响应。通过网络抓包、Wireshark分析,发现Kitex gRPC Server返回的报文Compressed Flag字段值错误,可能是并发读写或buf复用导致。修复方案是初始化buf的第一个字节为零,相关PR已合入。同时,指出Python客户端在遇到错误报文时应有更好的错误提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a788d24b2d81143ef49ef4bc0616e8e0.jpeg

- 起 -

前些天接到一个 Oncall,来自 Lark 的胡同学反馈,用 gRPC 官方的 python 客户端请求 Kitex gRPC Server,有时收到的 response 为 None。

请求的代码大致如下:

stub = xx_grpc.XXXServiceStub(channel)
resp = stub.SomeMethod(req)
logger.info("resp = {}".format(resp))

如果请求失败,按 python 的尿性,这里应该 raise 一个 exception,返回个 None 算个啥?

52224bca733b20c785905465a7c76a11.jpeg

胡同学补充说,从服务端的日志来看,请求是正常收到且处理了,并且通过增加两个环境变量再运行 client 端:

$ GRPC_TRACE=all GRPC_VERBOSITY=debug python3 test.py

可以看到 client 把 tcp 报文内容都 dump 出来了,虽然乱码很多,但是从一些文本中可以看到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值