gRPC在Python中的基本使用
环境准备
基础环境
本人所使用的环境:
- Ubuntu 20.04
- pip 22.1.2
- Python 3.8.13
安装gRPC
1 | pip install grpcio |
基本使用
Service的定义
定义proto文件
1 | // Service definition. |
生成gRPC代码
- 生成gRPC代码的命令行格式如下:
1 | python -m grpc_tools.protoc --proto_path=XXX --python_out=XXX --grpc_python_out=XXX @<filename> |
- grpc_tools.protoc命令的核心参数及其如下:
参数 | 是否必须 | 默认值 | 含义 |
---|---|---|---|
-I, –proto_path | 否 | 当前目录 | 待读取.protoc 文件的路径,可多次声明,若有多个路径,则会依次查找。如果都没有找到,则在–descriptor_set_in参数所指定的目录中查找 |
–python_out | 是 | / | 生成的request类和response类的路径 |
–grpc_python_out | 是 | / | 生成的client类和server类的路径 |
@<filename> | 是 | / | 所读取的.proto 文件的文件名。 如果指定了相对文件路径,则将在当前工作目录中搜索该文件。 |
- 关于其它参数及其含义,可使用
python -m grpc_tools.protoc --help
指令查看。
运行gRPC
- 启动server
1 | python server.py |
- 在新终端中启动client
1 | python service.py |
- 可以在新终端中看到server response
添加新的方法
- 修改
.proto
文件内容,新增SayHelloAgain方法:
1 | // Service definition. |
- 保存文件
- 重新生成gRPC代码:
1 | python -m grpc_tools.protoc --proto_path=XXX --python_out=XXX --grpc_python_out=XXX @<filename> |
- 修改server类,新增对应方法
1 | class Hello(hello_pb2_grpc.HelloServicer): |
- 修改client类,新增对应方法
1 | def run(): |
- 启动server
1 | python server.py |
- 在新终端中启动client
1 | python service.py |
- 最后可以在新终端中看到修改后的server response
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MomentNi!
评论