python - python grpc截止日期超过了很大百分比的错误
问题描述
我在python
grpc
客户端调用scala
grpc
服务器时遇到了很多超出期限的错误。
我正在报告来自客户端和服务器的指标,并且服务器报告的时间与客户端报告的时间之间存在很大差异,我认为这不能仅用网络延迟来解释(因为差异很大)。返回的对象大小相似,我认为序列化时间与网络时间相比可以忽略不计。
我已将超时设置为 20 毫秒
我的客户端代码很简单:
self.channel = grpc.insecure_channel(...)
self.stub = MyService_pb2_grpc.MyServiceStub(self.channel)
timeout = 0.02
try:
start_ms = time.time()
grpc_res = self.stub.getFoo(Request(...), timeout=timeout)
end_ms = time.time()
total_duration_ms = int((end_ms - start_ms) * 1000)
....
except Exception as e:
status_code = str(e.code()).split('.')[1]
logger.error('exception ....: %s', status_code) # around 20% deadline exceptions
我的服务器代码平均报告 5 毫秒,客户端代码7ms
平均报告,但如前所述,在 20% 超时20ms
有没有办法调试这个问题的根本原因,即较低级别的日志记录等?
解决方案
您可以尝试在环境变量下运行:
GRPC_VERBOSITY=DEBUG GRPC_TRACE=all
https ://github.com/grpc/grpc/blob/master/doc/environment_variables.md
推荐阅读
- c# - 获取当前周数 (C#)
- python - 将 MySQL 与 PostgreSQL 上的 Timescale 进行比较,以存储一个名为 Stocks 的大约 2000 个股票代码的表,什么是更好的选择?
- python - 我在 ping 在线人的命令方面遇到了麻烦
- php - 如何重命名压缩文件名?
- python - 在 Mac 上将 pyarmor/pyinstaller 打包为 unix 可执行文件后,Python 脚本无法再找到文件
- python - 如何将 Google App Engine 更新到 Python 3.8
- r - 使用带有“gam”的 geom_smooth() 的 span 等效
- php - SQLSTATE[HY000]:一般错误:1215 无法添加外键约束错误
- ant-media-server - 当我的录制流被推送到 S3 时,我无法播放我的录制
- cplex - 如何使用 Cplex 控制 pyomo 中的打印级别