小编Lev*_*ker的帖子

如何为具有多个 python 包的项目定义/组织 proto 文件?

如何为具有两个(或更多)Python 包的项目定义和组织 gRPC 原型文件?

假设我有以下 monorepo 结构:

my_project/  
 |
 |-my_client_pkg/
 |  |_Dockerfile
 |  |_setup.py
 |  |_my_client/
 |     |___init__.py
 |     |_client.py
 |
  -my_server_pkg/
    |_Dockerfile
    |_setup.py
    |_my_server/
       |___init__.py
       |_server.py
Run Code Online (Sandbox Code Playgroud)

我想使用 gRPC 将这两个服务连接在一起。我可以添加一个protos/目录,其中包含适当的子目录,如下所示:

my_project/  
 |
 |-protos/
 |  |_my_client_pkg/
 |  |  |_my_client.proto
 |  |
 |  |_my_server_pkg/
 |     |_my_server.proto
 |
 |-my_client_pkg/
 |  |_Dockerfile
 |  |_setup.py
 |  |_my_client/
 |     |___init__.py
 |     |_client.py
 |
  -my_server_pkg/
    |_Dockerfile
    |_setup.py
    |_my_server/
       |___init__.py
       |_server.py
Run Code Online (Sandbox Code Playgroud)

这有效:我可以使用正确的导入语句正确生成 .py 文件。这种方法的问题是我必须复制my_client.protointo中的所有内容my_server.proto。如果我需要进行更改,则必须在两个文件中进行更改,这显然很容易出错。这似乎确实违背了 protobuf 的目的。

我应该如何组织我的原型文件?是否可以在一处定义 proto,然后使用 protoimport语句无缝地复制定义?我应该做一些完全不同的事情吗?

编辑:这是一个示例原型文件: …

python package protocol-buffers grpc

5
推荐指数
1
解决办法
5401
查看次数

标签 统计

grpc ×1

package ×1

protocol-buffers ×1

python ×1