目录
- 1. 环境准备
- 1.1 基础环境
- 1.2 安装gRPC
- 2. 基本使用
- 2.1 Service的定义
- 2.1.1 定义proto文件
- 2.1.2 生成gRPC代码
- 2.1.3 运行gRPC
- 2.1.4 添加新的方法
1. 环境准备
1.1 基础环境
本人所使用的环境:
- Ubuntu 20.04
- pip 22.1.2
- Python 3.8.13
1.2 安装gRPC
复制代码
1
2
3pip install grpcio pip install grpcio-tools
2. 基本使用
2.1 Service的定义
2.1.1 定义proto文件
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13// Service definition. service Hello { // Sends response rpc SayHello (Request) returns (Response) {} // The request message. message Request { string message = 1; } // The response message message Response { string message = 1; }
2.1.2 生成gRPC代码
生成gRPC代码的命令行格式如下:
复制代码
1
2python -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
指令查看。
2.1.3 运行gRPC
- 启动server
复制代码
1
2python server.py
- 在新终端中启动client
复制代码
1
2python service.py
可以在新终端中看到server response。
2.1.4 添加新的方法
- 修改
.proto
文件内容,新增SayHelloAgain方法:
复制代码
1
2
3
4
5
6
7// Service definition. service Hello { // Sends response rpc SayHello (Request) returns (Response) {} // Sends another response rpc SayHelloAgain (Request) returns (Response) {}
- 保存文件
- 重新生成gRPC代码:
复制代码
1
2python -m grpc_tools.protoc --proto_path=XXX --python_out=XXX --grpc_python_out=XXX @<filename>
- 修改server类,新增对应方法
复制代码
1
2
3
4
5
6class Hello(hello_pb2_grpc.HelloServicer): def SayHello(self, request, context): return hello_pb2.Request(message='Hello, %s!' % request.message) def SayHelloAgain(self, request, context): return hello_pb2.Response(message='Hello again, %s!' % request.message)
- 修改client类,新增对应方法
复制代码
1
2
3
4
5
6
7
8def run(): with grpc.insecure_channel('localhost:50051') as channel: stub = hello_pb2_grpc.HelloStub(channel) response = stub.SayHello(hello_pb2.Request(message='you')) print("Hello client received: " + response.message) response = stub.SayHelloAgain(helloworld_pb2.Request(message='you')) print("Hello client received: " + response.message)
- 启动server
复制代码
1
2python server.py
- 在新终端中启动client
复制代码
1
2python service.py
可以在新终端中看到修改后的server response。
最后
以上就是完美冰淇淋最近收集整理的关于【学习笔记】gRPC在Python中的基本使用1. 环境准备2. 基本使用的全部内容,更多相关【学习笔记】gRPC在Python中的基本使用1.内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复