你能给我一个建议吗,在python中如何获得可能的grpc调用(以及调用中使用的对象)的列表?在
更确切地说,假设我有一个原型:
service MyService {
rpc Command1(Command1Request) returns (Command1Response);
rpc Command2(Command2Request) returns (Command2Response);
...
rpc CommandX(CommandXRequest) returns (CommandXResponse);
}
message Command1Request {
uint64 param1 = 2;
}
我想要的是使用控制台工具生成protobuf。我有argparse,希望能够为我的实用程序动态生成命令列表:
^{pr2}$现在我使用dir()方法来获取对象列表,因此修复了protobuf的特殊命名约定:如果我有“Command2Response”,我的调用对象是“Command2Request”,invoke请求的方法是“Command2”。在
有没有更正确的方法来获取可能调用的列表(命名约定太容易出现人为错误)?在
假设这个protobuf生成的python代码是实用工具的一部分,那么可以通过protobuf描述符获得.proto文件中定义的所有类型信息。例如: https://github.com/google/protobuf/blob/master/python/google/protobuf/internal/descriptor_test.py#L635
在你的情况下,它会是这样的:
一旦您有了服务描述符,您就可以获得在这个服务中定义的rpc方法的列表,这些方法中使用的请求/响应类型等等。参见: https://github.com/google/protobuf/blob/master/python/google/protobuf/descriptor.py#L748
你在寻找Python服务器中的映像吗?在
https://github.com/grpc/grpc/blob/master/doc/server-reflection.md
gRPC Python反射文档最近添加到这里:https://github.com/grpc/grpc/blob/master/doc/python/server_reflection.md
示例如下:https://github.com/grpc/grpc/blob/master/examples/python/helloworld/greeter_server_with_reflection.py
相关问题 更多 >
编程相关推荐