栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【学习笔记】gRPC在Python中的基本使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【学习笔记】gRPC在Python中的基本使用

目录
  • 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 @

grpc_tools.protoc命令的核心参数及其如下:

参数是否必须默认值含义
-I, --proto_path否当前目录待读取.protoc文件的路径,可多次声明,若有多个路径,则会依次查找。如果都没有找到,则在–descriptor_set_in参数所指定的目录中查找
–python_out是/生成的request类和response类的路径
–grpc_python_out是/生成的client类和server类的路径
@是/所读取的.proto文件的文件名。 如果指定了相对文件路径,则将在当前工作目录中搜索该文件。

关于其它参数及其含义,可使用python -m grpc_tools.protoc --help指令查看。

2.1.3 运行gRPC
  1. 启动server
python server.py
  1. 在新终端中启动client
python service.py

可以在新终端中看到server response。

2.1.4 添加新的方法
  1. 修改.proto文件内容,新增SayHelloAgain方法:
// Service definition.
service Hello {
  // Sends response
  rpc SayHello (Request) returns (Response) {}
  // Sends another response
  rpc SayHelloAgain (Request) returns (Response) {}
  1. 保存文件
  2. 重新生成gRPC代码:
python -m grpc_tools.protoc --proto_path=XXX --python_out=XXX --grpc_python_out=XXX @
  1. 修改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)
  1. 修改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)
  1. 启动server
python server.py
  1. 在新终端中启动client
python service.py

可以在新终端中看到修改后的server response。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982229.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号