這篇文章主要介紹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服務”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯行業資訊頻道!
本文標題:Python怎么搭建gRPC服務
當前URL:http://www.js-pz168.com/article40/pojoho.html
成都網站建設公司_創新互聯,為您提供小程序開發、服務器托管、外貿網站建設、搜索引擎優化、域名注冊、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯