当前位置: 首页 > 图灵资讯 > 行业资讯> Python如何搭建gRPC服务

Python如何搭建gRPC服务

来源:图灵python
时间: 2024-06-28 21:25:40

1、安装python所需的库。

pipinstallgrpcio
pipinstallgrpcio-tools
pipinstallprotobuf

2、定义GRPC接口。

syntax="proto3";
optioncc_generic_services=true;
//定义服务界面
serviceGrpcService{
rpchello(HelloRequest)returns(HelloResponse)多个接口可以在服务中定义,也就是多函数功能
}
//请求参数
messageHelloRequest{
stringdata=1;//数字1和2是参数的位置顺序,而不是赋值参数
Skillskill=2;//支持自定义数据格式,非常灵活
};
//返回对象
messageHelloResponse{
stringresult=1;
map<string,int32>map_result=2;//支持map数据格式,类似dict
};
messageSkill{
stringname=1;
};

3、语言代码由protoc和插件编译生成。

python-mgrpc_tools.protoc-I./--python_out=./--grpc_python_out=../hello.proto

使用编译工具将proto文件转换为py文件,直接在当前文件目录下运行上述代码。

4、编写grpc服务器代码。

#!/usr/bin/envpython
#coding=utf8
importtime
fromconcurrentimportfutures
importgrpc
fromgRPC_exampleimporthello_pb2_grpc,hello_pb2
_ONE_DAY_IN_SECONDS=60*60*24
classTestService(hello_pb2_grpc.GrpcServiceServicer):
'''
继承Grpcserviceservicer,实现hello方法
'''
def__init__(self):
pass
defhello(self,request,context):
'''
实现hello的具体方法,Helloresponse返回按照pb返回对象结构
:paramrequest:
:paramcontext:
:return:
'''
result=request.data+request.skill.name+"thisisgprctestservice"
list_result={"12":1232}
returnhello_pb2.HelloResponse(result=str(result),
map_result=list_result)
defrun():
'''
启动模拟服务
:return:
'''
server=grpc.server(futures.ThreadPoolExecutor(max_workers=10))
hello_pb2_grpc.add_GrpcServiceServicer_to_server(TestService(),server)
server.add_insecure_port('[::]:50052')
server.start()
print("startservice...")
try:
whileTrue:
time.sleep(_ONE_DAY_IN_SECONDS)
exceptKeyboardInterrupt:
server.stop(0)
if__name__='__main__':
run()

5、编写grpc客户端代码。

#!/usr/bin/envpython
#coding=utf8
importgrpc
fromgRPC_exampleimport#!/usr/bin/envpython
#coding=utf8
importgrpc
fromgRPC_exampleimporthello_pb2_grpc,hello_pb2
defrun():
'''
模拟请求服务方法信息
:return:
'''
conn=grpc.insecure_channel('localhost:50052')
client=hello_pb2_grpc.GrpcServiceStub(channel=conn)
skill=hello_pb2.Skill(name="engineer")
request=hello_pb2.HelloRequest(data="xiaogang",skill=skill)
respnse=client.hello(request)
print("received:",respnse.result)
if__name__='__main__':
run()
defrun():
'''
模拟请求服务方法信息
:return:
'''
conn=grpc.insecure_channel('localhost:50052')
client=hello_pb2_grpc.GrpcServiceStub(channel=conn)
skill=hello_pb2.Skill(name="engineer")
request=hello_pb2.HelloRequest(data="xiaogang",skill=skill)
response=client.hello(request)
print("received:",response.result)
if__name__='__main__':
run()

6、调用测试。

首先启动运行服务器代码,然后启动运行客户端代码。

以上是Python搭建GRPC服务的方法,希望对大家有所帮助。更多Python学习指导:python基础教程

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。