千家信息网

Python怎么搭建gRPC服务

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍Python怎么搭建gRPC服务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、安装python所需的库。pip install grpciopip inst
千家信息网最后更新 2025年01月22日Python怎么搭建gRPC服务

这篇文章主要介绍Python怎么搭建gRPC服务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1、安装python所需的库。

pip install grpciopip install grpcio-tools  pip install protobuf

2、定义gRPC接口。

syntax = "proto3";option cc_generic_services = true;//定义服务接口service GrpcService {    rpc hello (HelloRequest) returns (HelloResponse) {}  //一个服务中可以定义多个接口,也就是多个函数功能}//请求的参数message HelloRequest {    string data = 1;   //数字1,2是参数的位置顺序,并不是对参数赋值    Skill skill = 2;  //支持自定义的数据格式,非常灵活};//返回的对象message HelloResponse {    string result = 1;    map map_result = 2; //支持map数据格式,类似dict};message Skill {    string name = 1;};

3、用protoc和相应的插件编译生成相应语言的代码。

python -m grpc_tools.protoc -I ./ --python_out=./ --grpc_python_out=. ./hello.proto

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

4、编写grpc服务器代码。

#! /usr/bin/env python# coding=utf8import timefrom concurrent import futuresimport grpcfrom gRPC_example import hello_pb2_grpc, hello_pb2_ONE_DAY_IN_SECONDS = 60 * 60 * 24class TestService(hello_pb2_grpc.GrpcServiceServicer):    '''    继承GrpcServiceServicer,实现hello方法    '''    def __init__(self):        pass    def hello(self, request, context):        '''        具体实现hello的方法,并按照pb的返回对象构造HelloResponse返回        :param request:        :param context:        :return:        '''        result = request.data + request.skill.name + " this is gprc test service"        list_result = {"12": 1232}        return hello_pb2.HelloResponse(result=str(result),                                       map_result=list_result)def run():    '''    模拟服务启动    :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("start service...")    try:        while True:            time.sleep(_ONE_DAY_IN_SECONDS)    except KeyboardInterrupt:        server.stop(0)if __name__ == '__main__':    run()

5、编写gRPC客户端代码。

#! /usr/bin/env python# coding=utf8import grpcfrom gRPC_example import #! /usr/bin/env python# coding=utf8import grpcfrom gRPC_example import hello_pb2_grpc, hello_pb2def run():    '''    模拟请求服务方法信息    :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="xiao gang", skill=skill)    respnse = client.hello(request)    print("received:",respnse.result)if __name__ == '__main__':    run()def run():    '''    模拟请求服务方法信息    :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="xiao gang", skill=skill)    response = client.hello(request)    print("received:",response.result)if __name__ == '__main__':    run()

6、调用测试。

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

以上是"Python怎么搭建gRPC服务"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0