gRPC 和 Beta gRPC 类 有什么区别?

What's the difference between gRPC and Beta gRPC classes?

我有以下 proto 文件,它将生成一个 _pb2.py 文件,用于 python .

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)
...

我想知道这两个 class 之间的区别(CalculatorServicerBetaCalculatorServicer)及其用法。

我看过使用第一个的代码 class 和使用第二个的代码。

您应该使用非限定代码元素(特别是 _pb2_grpc.py 文件中的那些代码元素)而不是 _pb2.py 文件中的 Beta 代码元素。如果您使用最新版本的代码生成器生成 _pb2.py_pb2_grpc.py 文件(请尝试使用绝对最新的 grpcio-tools, currently 1.1.3), you should see doc strings on the Beta code elements in the generated code describing them as deprecated and to be removed in the future.

Our examples 显示生成的 _pb2_pb2_grpc 模块的当前预期用途。