`protoc` 和 `python -m grpc_tools.protoc` 的区别
Difference between `protoc` and `python -m grpc_tools.protoc`
要为 Python 编译原型文件,我可以
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
只包含协议缓冲区的逻辑。也就是说,它将为多种语言生成 serialization/deserialization 代码。但是,默认情况下它不会为存根和服务器生成代码。这留给了通过称为 protoc 插件的系统来分离 RPC 系统。
Protoc plugins 提供了一个简单的接口,可执行文件通过该接口在 stdin 上获取协议缓冲区的描述,并在 stdout 上输出相应的生成代码。在 Google 内部,该系统用于为 Stubby 生成代码。在外部,它用于为 gRPC(或任何其他想要使用协议缓冲区的 RPC 系统)生成代码。
插件可以为自己注册一个命令行标志,以指示 protoc 应该在哪里输出生成的代码。因此,在您上面的示例中,--python_out
指示生成的 serialization/deserialization 代码应该去哪里,而 --grpc_python_out
是由 gRPC Python 代码生成器注册的标志,指示 Python 存根和服务器代码应该放在文件系统上。
grpc_tools
is a C extension 将 protoc
和 gRPC Python 协议插件捆绑在一起,这样用户就不必处理下载 protoc
,下载 gRPC Python 代码生成器,并设置必要的配置以使它们能够正常工作。但是,理论上,您应该能够将所有这些部分组合在一起,使它们像 grpc_tools
一样工作(尽管我没有尝试过)。
要为 Python 编译原型文件,我可以
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
只包含协议缓冲区的逻辑。也就是说,它将为多种语言生成 serialization/deserialization 代码。但是,默认情况下它不会为存根和服务器生成代码。这留给了通过称为 protoc 插件的系统来分离 RPC 系统。
Protoc plugins 提供了一个简单的接口,可执行文件通过该接口在 stdin 上获取协议缓冲区的描述,并在 stdout 上输出相应的生成代码。在 Google 内部,该系统用于为 Stubby 生成代码。在外部,它用于为 gRPC(或任何其他想要使用协议缓冲区的 RPC 系统)生成代码。
插件可以为自己注册一个命令行标志,以指示 protoc 应该在哪里输出生成的代码。因此,在您上面的示例中,--python_out
指示生成的 serialization/deserialization 代码应该去哪里,而 --grpc_python_out
是由 gRPC Python 代码生成器注册的标志,指示 Python 存根和服务器代码应该放在文件系统上。
grpc_tools
is a C extension 将 protoc
和 gRPC Python 协议插件捆绑在一起,这样用户就不必处理下载 protoc
,下载 gRPC Python 代码生成器,并设置必要的配置以使它们能够正常工作。但是,理论上,您应该能够将所有这些部分组合在一起,使它们像 grpc_tools
一样工作(尽管我没有尝试过)。