python grpc截止日期大大超过了错误

时间:2019-04-02 14:13:13

标签: python amazon-ecs grpc-java grpc-python

python grpc客户端调用scala grpc服务器的客户端中,我遇到了很多超过截止日期的错误。

我正在报告客户端和服务器的指标,并且服务器报告时间与客户端报告时间之间存在很大差异,我认为这不能仅通过网络延迟来解释(因为差异很大)。返回的对象大小相似,我认为序列化时间与网络时间相比可以忽略不计。

我将超时设置为20ms

我的客户代码很简单:

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,但如上所述,在20ms上达到了20%的超时时间

是否可以调试此问题的根本原因,即较低级别的日志记录等?

1 个答案:

答案 0 :(得分:1)

您可以尝试在环境变量下运行: GRPC_VERBOSITY=DEBUG GRPC_TRACE=all https://github.com/grpc/grpc/blob/master/doc/environment_variables.md