gpt4 book ai didi

grpc - `protoc` 和 `python -m grpc_tools.protoc` 的区别

转载 作者:行者123 更新时间:2023-12-04 12:24:01 26 4
gpt4 key购买 nike

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

protoc -I=.--python_out=$DST_DIR sommem.proto
基于 https://developers.google.com/protocol-buffers/docs/pythontutorial
或者
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
我想知道 protoc 和有什么区别和 python -m grpc_tools.protoc ,生成python更推荐哪一个 *_pb2.py[i]文件?
顺便说一句,它看起来 protoc不支持 --grpc_python_out .

最佳答案

protoc只包含 Protocol Buffer 的逻辑。也就是说,它将为许多语言生成序列化/反序列化代码。但是,默认情况下它不会为 stub 和服务器生成代码。这留给了通过称为 protoc 插件的系统来分离 RPC 系统。
Protoc plugins提供一个简单的接口(interface),可执行文件通过它在 stdin 上获取 Protocol Buffer 的描述,并在 stdout 上输出相应的生成代码。在 Google 内部,该系统用于为 Stubby 生成代码。在外部,它用于为 gRPC(或任何其他想要使用 Protocol Buffer 的 RPC 系统)生成代码。
插件可以为自己注册一个命令行标志,以指示 protoc 应该在哪里输出生成的代码。所以,在你上面的例子中,--python_out指示生成的序列化/反序列化代码应该去哪里,而 --grpc_python_out是 gRPC Python 代码生成器注册的标志,指示 Python stub 和服务器代码应放置在文件系统上的哪个位置。
grpc_tools is a C extension捆绑两者 protoc和 gRPC Python protoc 插件一起使用,这样用户就不必处理下载 protoc ,下载 gRPC Python 代码生成器,并设置必要的配置以使它们正常工作。但是,理论上,您应该能够将所有这些部分组合在一起,使它们像 grpc_tools 一样工作。 (虽然我没试过)。

关于grpc - `protoc` 和 `python -m grpc_tools.protoc` 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62649353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com