我是靠谱客的博主 完美冰淇淋,最近开发中收集的这篇文章主要介绍【学习笔记】gRPC在Python中的基本使用1. 环境准备2. 基本使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 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

  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 @<filename>
  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。

最后

以上就是完美冰淇淋为你收集整理的【学习笔记】gRPC在Python中的基本使用1. 环境准备2. 基本使用的全部内容,希望文章能够帮你解决【学习笔记】gRPC在Python中的基本使用1. 环境准备2. 基本使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部