您好,登錄后才能下訂單哦!
本篇內容主要講解“Python中怎么搭建gRPC服務”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“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服務”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。