温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python怎么搭建gRPC服务

发布时间:2021-09-07 11:30:45 来源:亿速云 阅读:330 作者:小新 栏目:编程语言

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

1、安装python所需的库。

pip install grpcio pip 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<string, int32> 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=utf8 import time from concurrent import futures import grpc from gRPC_example import hello_pb2_grpc, hello_pb2 _ONE_DAY_IN_SECONDS = 60 * 60 * 24 class 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=utf8 import grpc from gRPC_example import #! /usr/bin/env python # coding=utf8 import grpc from gRPC_example import hello_pb2_grpc, hello_pb2 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)     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服务”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI