概述
目录
- 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
pip install grpcio
pip install grpcio-tools
2. 基本使用
2.1 Service的定义
2.1.1 定义proto文件
// 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代码的命令行格式如下:
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
指令查看。
2.1.3 运行gRPC
- 启动server
python server.py
- 在新终端中启动client
python service.py
可以在新终端中看到server response。
2.1.4 添加新的方法
- 修改
.proto
文件内容,新增SayHelloAgain方法:
// Service definition.
service Hello {
// Sends response
rpc SayHello (Request) returns (Response) {}
// Sends another response
rpc SayHelloAgain (Request) returns (Response) {}
- 保存文件
- 重新生成gRPC代码:
python -m grpc_tools.protoc --proto_path=XXX --python_out=XXX --grpc_python_out=XXX @<filename>
- 修改server类,新增对应方法
class 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类,新增对应方法
def 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
python server.py
- 在新终端中启动client
python service.py
可以在新终端中看到修改后的server response。
最后
以上就是完美冰淇淋为你收集整理的【学习笔记】gRPC在Python中的基本使用1. 环境准备2. 基本使用的全部内容,希望文章能够帮你解决【学习笔记】gRPC在Python中的基本使用1. 环境准备2. 基本使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复