我有以下 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 )之间的区别及其用法。
我见过使用第一个类的代码和使用第二个类的代码。
答案 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
模块的当前预期用途。