gRPC和Beta gRPC类有什么区别?

时间:2017-03-07 12:21:59

标签: python grpc

我有以下 proto 文件,该文件将生成要在python中使用的 _pb2.py 文件。

syntax = "proto3";
service Calculator {
    rpc Add (AddRequest) returns (AddReply) {}
}
message AddRequest{ 
    int32 n1=1;
    int32 n2=2;
}

message AddReply{
    int32 n1=1;
}

_pb2.py 中,protoc会生成:

...
class CalculatorServicer(object):
  def Add(self, request, context):
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

class BetaCalculatorServicer(object):
  def Add(self, request, context):
    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
...

我想知道两个类( CalculatorServicer vs BetaCalculatorServicer )之间的区别及其用法。

我见过使用第一个类的代码和使用第二个类的代码。

1 个答案:

答案 0 :(得分:0)

您应该使用非限定代码元素(特别是_pb2_grpc.py文件中的代码元素)而不是_pb2.py文件中的Beta代码元素。如果您使用最新版本的代码生成器生成_pb2.py_pb2_grpc.py文件(请尝试使用绝对最新grpcio-tools,目前为1.1.3),您应该看到{{ 3}}

doc strings on the Beta code elements in the generated code describing them as deprecated and to be removed in the future显示了生成的_pb2_pb2_grpc模块的当前预期用途。