成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

用Python編寫簡單的gRPC服務(wù)的詳細(xì)過程

瀏覽:87日期:2022-06-15 14:18:47

gRPC 是可以在任何環(huán)境中運(yùn)行的現(xiàn)代開源高性能 RPC 框架。它可以通過可插拔的支持來有效地連接數(shù)據(jù)中心內(nèi)和跨數(shù)據(jù)中心的服務(wù),以實(shí)現(xiàn)負(fù)載平衡,跟蹤,運(yùn)行狀況檢查和身份驗證。它也適用于分布式計算的最后一英里,以將設(shè)備,移動應(yīng)用程序和瀏覽器連接到后端服務(wù)。

用Python編寫簡單的gRPC服務(wù)

grpc官網(wǎng)python參考:https://www.grpc.io/docs/languages/python/quickstart/http://grpc.github.io/grpc/python/grpc.html

Python 3.5 or higher pip version 9.0.1 or higher

安裝gRPC相關(guān)的庫grpcio-tools主要用根據(jù)我們的protocol buffer定義來生成Python代碼,官方解釋是Protobuf code generator for gRPC。

#apt install python3-pippip install grpciopip install protobufpip install grpcio_tools編寫proto文件

proto是一個協(xié)議文件,客戶端和服務(wù)器的通信接口正是通過proto文件協(xié)定的,可以根據(jù)不同語言生成對應(yīng)語言的代碼文件。

heartbeat.proto文件:

syntax = 'proto3';message HeartbeatRequest{string Host = 1;int32 Mem = 2;int32 Disk = 3;int32 Cpu = 4;int64 Timestamp = 5;int64 Seq = 6;}message HeartbeatResponse{int32 ErrCode = 1;string ErrMsg = 2;}

heartbeat_service.proto

syntax = 'proto3';import 'heartbeat.proto';// HeartBeatServiceservice HeartBeatService{ rpc HeartBeat(HeartbeatRequest) returns(HeartbeatResponse){}}

核心 就是一個 用于生成需要用到數(shù)據(jù)類型的文件;一個就是用于生成相關(guān)調(diào)用方法的類。 一個定義數(shù)據(jù)類型,一個用于定義方法。

通過proto生成.py文件

proto文件需要通過protoc生成對應(yīng)的.py文件。protoc的下載地址 。下載解壓之后,將解壓目錄添加到path的環(huán)境變量中。

pip install grpcioinstall grpcio-tools#pip install --upgrade protobuf

注意:【下面命令是在proto文件所在的目錄執(zhí)行的,-I 用來指定proto的目錄是 . 】

python -m grpc_tools.protoc -I=. --python_out=.. heartbeat.protopython -m grpc_tools.protoc -I=. --grpc_python_out=.. heartbeat_service.proto -I 指定proto所在目錄 -m 指定通過protoc生成py文件 ?python_out生成py文件的輸出路徑 heartbeat.proto、heartbeat_service.proto為 輸入的proto文件

用Python編寫簡單的gRPC服務(wù)的詳細(xì)過程

生成的文件名中 xxx_pb2.py 就是我們剛才創(chuàng)建數(shù)據(jù)結(jié)構(gòu)文件,里面有定義函數(shù)參數(shù)和返回數(shù)據(jù)結(jié)構(gòu); xxx_pb2_grpc.py 就是我們定義的函數(shù),定義了我們客服端rpc將來要調(diào)用方法。編譯客戶端和服務(wù)端代碼

服務(wù)端

#!/usr/bin/env python# coding=utf-8import sysfrom concurrent import futuresimport timeimport grpcfrom google.protobuf.json_format import MessageToJsonimport heartbeat_service_pb2_grpcimport heartbeat_pb2from lib.core.log import LOGGERclass HeartBeatSrv(heartbeat_service_pb2_grpc.HeartBeatServiceServicer): def HeartBeat(self, msg, context):try: # LOGGER.info(MessageToJson(msg, preserving_proto_field_name=True)) body = MessageToJson(msg, preserving_proto_field_name=True) LOGGER.info('Get Heartbeat Request: %s', body) response = heartbeat_pb2.HeartbeatResponse() response.ErrCode = 0000 response.ErrMsg = 'success' return responseexcept Exception as e: print('exception in heartbeat') LOGGER.error('RPC Service exception: %s', e) response = heartbeat_pb2.HeartbeatResponse() response.ErrCode = 500 response.ErrMsg = 'rpc error: %s' % e return responsedef server(host, rpc_port): # 這里通過thread pool來并發(fā)處理server的任務(wù) # 定義服務(wù)器并設(shè)置最大連接數(shù),concurrent.futures是一個并發(fā)庫,類似于線程池的概念 grpc_server = grpc.server(futures.ThreadPoolExecutor(max_workers=100)) # 不使用SSL grpc_server.add_insecure_port(’[::]’ + ’:’ + str(rpc_port)) # This method is only safe to call before the server is started. # 綁定處理器HeartBeatSrv(自己實(shí)現(xiàn)了處理函數(shù)) heartbeat_service_pb2_grpc.add_HeartBeatServiceServicer_to_server(HeartBeatSrv(), grpc_server) # 該方法只能調(diào)用一次, start() 不會阻塞 # 啟動服務(wù)器 grpc_server.start() LOGGER.info('server start...') while 1:time.sleep(10) #grpc_server.wait_for_termination()def main(): try:LOGGER.info('begin start server')rpc_port = 8090host = '::'server(host, rpc_port) except Exception as e:LOGGER.error('server start error: %s', e)time.sleep(5)if __name__ == ’__main__’: LOGGER.info(sys.path) main()

客戶端

from time import sleepimport grpcimport heartbeat_pb2import heartbeat_service_pb2_grpcfrom lib.core.log import LOGGERdef run(seq): option = [(’grpc.keepalive_timeout_ms’, 10000)] # with grpc.insecure_channel(target=’127.0.0.1:8090’, options=option) as channel:# 客戶端實(shí)例stub = heartbeat_service_pb2_grpc.HeartBeatServiceStub(channel)# stub調(diào)用服務(wù)端方法response = stub.HeartBeat(heartbeat_pb2.HeartbeatRequest(Host=’hello grpc’, Seq=seq), timeout=10)LOGGER.info('response ErrCode:%s', response.ErrCode)if __name__ == ’__main__’: for i in range(1, 10000):LOGGER.info('i: %s', i)sleep(3)run(i)參考

使用Python實(shí)現(xiàn)gRPC通信參考URL: https://zhuanlan.zhihu.com/p/363810793python grpc搭構(gòu)服務(wù)https://www.jianshu.com/p/10d9ca034567python grpc 服務(wù)端和客戶端調(diào)用demo參考URL: https://blog.csdn.net/qq_42363032/article/details/115282405

到此這篇關(guān)于用Python編寫簡單的gRPC服務(wù)的文章就介紹到這了,更多相關(guān)Python gRPC服務(wù)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
成人不卡免费av| 成人av在线资源网站| 中文字幕av一区二区三区高| 日本亚洲三级在线| 奇米影视在线99精品| 黄色成人av网站| 日韩一区二区在线观看| 亚洲成人免费视频| 99视频一区二区| 欧美午夜精品一区二区蜜桃| 亚洲男帅同性gay1069| 欧美日韩精品一本二本三本| 欧美最猛黑人xxxxx猛交| 三级精品在线观看| 亚洲黄页一区| 成人欧美一区二区三区小说| 94-欧美-setu| 国产亚洲综合在线| 国产精品亚洲午夜一区二区三区| 久久看片网站| 亚洲精品国久久99热| 91年精品国产| 日韩精品综合一本久道在线视频| 日韩高清国产一区在线| 国产综合色一区二区三区| 精品久久久久av影院| 国产在线麻豆精品观看| 日本韩国欧美国产| 一区二区三区四区在线| 午夜精品区一区二区三| 精品日韩一区二区三区免费视频| 久久99精品国产.久久久久久| 成人av网站免费| 欧美精品丝袜久久久中文字幕| 一区二区三区中文字幕电影| 欧美性大战久久久久| 久久久久久电影| 国产凹凸在线观看一区二区| 色一区在线观看| 亚洲另类一区二区| 狠狠88综合久久久久综合网| 中文字幕乱码久久午夜不卡 | 亚洲国产电影在线观看| 欧美美女网站色| 久久久久久久久久久电影| 亚洲乱码一区二区三区在线观看| 欧美午夜在线视频| 国产精品视频你懂的| 99re8在线精品视频免费播放| 欧美成人高清电影在线| 偷拍亚洲欧洲综合| 久久大逼视频| 午夜视频一区二区三区| 国产日韩一区二区三区在线播放| 亚洲丝袜美腿综合| 亚洲五月婷婷| 国产欧美va欧美不卡在线| 91视频在线观看免费| 久久午夜免费电影| 97se亚洲国产综合在线| 久久久电影一区二区三区| 风流少妇一区二区| 欧美一区二区三区在| 成人午夜碰碰视频| 久久久久久免费| 欧美在线日韩| 国产精品理伦片| 国产视频在线观看一区| 激情综合五月婷婷| 日韩欧美在线123| 狠狠综合久久| 亚洲一区二区欧美激情| 精品视频1区2区| 国产成人综合亚洲91猫咪| 欧美大白屁股肥臀xxxxxx| 含羞草久久爱69一区| 亚洲色图另类专区| 色婷婷激情综合| 激情五月婷婷综合网| 3d动漫精品啪啪一区二区竹菊| www.亚洲人| 欧美激情资源网| 久久精品主播| 美日韩黄色大片| 久久久久国产精品厨房| 国产一区日韩一区| 日韩综合小视频| 678五月天丁香亚洲综合网| 亚洲午夜电影| 亚洲精品高清在线| 欧美精品丝袜中出| 91色九色蝌蚪| 视频在线在亚洲| 欧美一级专区免费大片| 亚洲国产综合在线看不卡| 亚洲一区在线视频观看| 日本韩国精品在线| 丁香激情综合国产| 欧美激情综合五月色丁香小说| 99热免费精品在线观看| 亚洲福利一区二区三区| 欧美性欧美巨大黑白大战| 成人一区二区三区视频| 中文字幕在线视频一区| 久久高清国产| 国产乱淫av一区二区三区| 精品欧美乱码久久久久久| 国产在线一区二区三区四区 | 国产一区二区剧情av在线| 国产无一区二区| 99国产精品视频免费观看一公开| 午夜伦欧美伦电影理论片| 欧美一区二区播放| 在线观看视频日韩| 日韩电影在线一区二区| 欧美一级爆毛片| 狠狠综合久久av一区二区老牛| 日韩电影一区二区三区四区| 日韩亚洲欧美在线观看| 欧美日本韩国一区二区三区| 亚洲一区二区三区四区的| 欧美日韩日日摸| 91在线看国产| 国产精品亲子乱子伦xxxx裸| 亚洲欧美日韩另类精品一区二区三区| 国产中文字幕一区| 国产日韩精品一区二区三区| 国产伦精品一区二区三| 国产一区 二区| 亚洲天天做日日做天天谢日日欢 | 免费成人在线视频观看| 久久这里只有精品视频网| 亚洲一区成人| 国产99久久精品| 一区二区三区蜜桃网| 欧美精品 国产精品| 欧美日韩国语| 麻豆精品一区二区综合av| 中文字幕欧美三区| 欧美三级日韩在线| 国内在线观看一区二区三区| 国内成人免费视频| 中文字幕一区二区三区视频| 欧美日韩一级二级三级| 亚洲人成免费| 国产精品白丝jk黑袜喷水| 亚洲精品写真福利| 欧美一区二区三区免费| 99pao成人国产永久免费视频| 狠狠色丁香久久婷婷综| 亚洲精品va在线观看| 欧美在线999| 在线观看日韩av电影| 激情五月播播久久久精品| 亚洲欧美日韩一区二区三区在线观看| 欧美日韩在线观看一区二区| 在线精品福利| 国产91精品露脸国语对白| 亚洲国产精品一区二区www| 久久只精品国产| 欧美色爱综合网| 国产精品免费一区二区三区在线观看 | 成人深夜视频在线观看| 亚洲国产精品一区二区久久恐怖片| 久久影视一区二区| 欧美影视一区在线| 国产视频欧美| 欧美另类一区| 国产呦精品一区二区三区网站| 亚洲日本在线a| 精品久久久久久久久久久久久久久| 久久综合狠狠| 国产综合第一页| 国产999精品久久久久久绿帽| 亚洲精品免费看| 欧美日韩视频在线观看一区二区三区 | 国产精品初高中精品久久| 久久99久久精品| 亚洲精品欧美二区三区中文字幕| 日韩免费成人网| 色www精品视频在线观看| 国产综合精品| 成人免费毛片app| 亚洲1区2区3区视频| 精品第一国产综合精品aⅴ| 美女久久一区| 韩国一区二区三区美女美女秀| 丝袜美腿成人在线| 亚洲欧洲www| 久久久久国色av免费看影院| 日韩一本二本av| 欧美军同video69gay| 在线免费观看日韩欧美| 免费看的黄色欧美网站| 91久久在线| 亚洲高清视频一区| 黑人中文字幕一区二区三区| 欧美日一区二区在线观看| 欧美激情麻豆| 色综合中文字幕国产 |