1

我正在开发一个从各种外部来源调用多个 gRPC 服务的软件。可能会出现消息名称冲突,因为这些服务可能没有包名称,并且它们可能使用具有相同名称的消息。我不能真正更改 .proto 文件,因为我不是这些服务的开发者。

据我了解,在 Python 的 gRPC 实现中,对于每条消息都会进行一个函数调用,_sym_db.RegisterMessage(<message>)DESCRIPTOR提取消息并将其用作将该消息添加到符号数据库的键。因此,来自不同文件的完全不相关的消息可能会发生冲突,因为 gRPC 会尝试将它们添加到具有相同密钥的符号数据库中。

另一方面,我尝试注释掉_sym_db.RegisterMessage(<message>)自动生成的 gRPC 代码中的所有引用,一切仍然正常。据我了解,这个数据库是用来在第一次导入后按符号引用编译后的代码的,但是即使完全不使用这个数据库,仍然可以进行客户端调用。

谁能确认这是真的还是假的?DESCRIPTOR另外,您认为在符号数据库中使用与消息不同的密钥时提出 PR 是否有意义?像文件+描述符什么的。

谢谢!

4

0 回答 0