首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >` grpc_tools.protoc`与` `python -m Protoc`的区别

` grpc_tools.protoc`与` `python -m Protoc`的区别
EN

Stack Overflow用户
提问于 2020-06-30 10:22:19
回答 1查看 888关注 0票数 4

要编译Python的proto文件,我可以

代码语言:javascript
复制
protoc -I=.--python_out=$DST_DIR sommem.proto

基于https://developers.google.com/protocol-buffers/docs/pythontutorial

代码语言:javascript
复制
python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. some.proto

基于https://grpc.io/docs/languages/python/basics/#generating-client-and-server-code

我想知道protocpython -m grpc_tools.protoc有什么不同,在生成python *_pb2.py[i]文件时,哪一种更值得推荐?

顺便说一句,看起来protoc不支持--grpc_python_out

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-07 01:14:34

protoc只包含协议缓冲区的逻辑。也就是说,它将为许多语言生成序列化/反序列化代码。但是,默认情况下,它不会为存根和服务器生成代码。这是通过一个称为协议插件的系统来分离RPC系统的。

Protoc plugins提供了一个简单的接口,可执行文件通过该接口获取标准输入上的协议缓冲区的描述,并在标准输出上输出相应的生成代码。在Google内部,该系统用于为Stubby生成代码。在外部,它用于为gRPC (或任何其他希望使用协议缓冲区的RPC系统)生成代码。

插件可以为自己注册一个命令行标志,以指示protoc应该在哪里输出生成的代码。因此,在上面的示例中,--python_out指示生成的序列化/反序列化代码应该放在哪里,而--grpc_python_out是由gRPC Python代码生成器注册的标志,指示Python存根和服务器代码应该放在文件系统上的什么位置。

grpc_tools is a C extensionprotoc和gRPC Python协议插件捆绑在一起,这样用户就不必下载protoc,下载gRPC Python代码生成器,并进行必要的配置设置,使它们能够正常工作。但是,从理论上讲,您应该能够将所有这些部分放在一起,使它们像grpc_tools一样工作(尽管我还没有尝试过)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62649353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档