麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Python使用gRPC傳輸協議教程

2020-02-15 23:14:14
字體:
來源:轉載
供稿:網友

gRPC 簡介:

gRPC 是一款高性能、開源的 RPC 框架,產自 Google,基于 ProtoBuf 序列化協議進行開發,支持多種語言(Golang、Python、Java等),本篇只介紹 Python 的 gRPC 使用。因為 gRPC 對 HTTP/2 協議的支持使其在 Android、IOS 等客戶端后端服務的開發領域具有良好的前景。gRPC 提供了一種簡單的方法來定義服務,同時客戶端可以充分利用 HTTP2 stream 的特性,從而有助于節省帶寬、降低 TCP 的連接次數、節省CPU的使用等。

安裝:

gRPC 的安裝:

$ pip install grpcio

安裝 ProtoBuf 相關的 python 依賴庫:

$ pip install protobuf

安裝 python grpc 的 protobuf 編譯工具:

$ pip install grpcio-tools

GRPC使用案例

下看一下項目目錄結構

grpc是一套傳輸協議,我們需要在底層實現這套傳輸協議.當然這些工作都已經被做完了,所以我們只要學會使用一個具有grpc傳輸協議的服務器和在客戶端上調用grpc傳輸協議傳輸數據就可以了.

grpc傳輸協議傳輸的數據類型為protobuf數據.所以grpc都是和protobuf一塊使用.

(1)新建data.proto文件,定義傳輸的數據格式和grpc服務要實現的函數

syntax = "proto3";package example;service FormatData {  //定義服務,用在rpc傳輸中 rpc DoFormat(actionrequest) returns (actionresponse){}}message actionrequest { string text = 1;}message actionresponse{ string text=1;}

(2)生成proto數據的python調用格式和grpc服務接口

在proto文件目錄下 調用下列命令

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

會生成:data_pb2.py 與 data_pb2_grpc.py, 其中data_pb2.py是數據格式調用的文件,data_pb2_grpc.py是grpc傳輸協議接口調用的文件.

(3)創建實現了grpc傳輸協議的服務器端

在服務器端代碼中需要實現proto文件中編寫的服務接口,并重寫處理函數,將重寫后的服務類實例化以后添加到grpc服務器中,這樣創建的grpc服務器就可以實現自定義的proto傳輸服務了.

# 實現了 server 端用于接收客戶端發送的數據,并對數據進行大寫處理后返回給客戶端# ! /usr/bin/env python# -*- coding: utf-8 -*-import grpcimport timefrom concurrent import futuresfrom example import data_pb2, data_pb2_grpc_ONE_DAY_IN_SECONDS = 60 * 60 * 24_HOST = 'localhost'_PORT = '8080'# 實現一個派生類,重寫rpc中的接口函數.自動生成的grpc文件中比proto中的服務名稱多了一個Servicerclass FormatData(data_pb2_grpc.FormatDataServicer):  # 重寫接口函數.輸入和輸出都是proto中定義的Data類型  def DoFormat(self, request, context):    str = request.text    return data_pb2.actionresponse(text=str.upper()) # 返回一個類實例def serve():  # 定義服務器并設置最大連接數,corcurrent.futures是一個并發庫,類似于線程池的概念  grpcServer = grpc.server(futures.ThreadPoolExecutor(max_workers=4))  # 創建一個服務器  data_pb2_grpc.add_FormatDataServicer_to_server(FormatData(), grpcServer) # 在服務器中添加派生的接口服務(自己實現了處理函數)  grpcServer.add_insecure_port(_HOST + ':' + _PORT)  # 添加監聽端口  grpcServer.start()  # 啟動服務器  try:    while True:      time.sleep(_ONE_DAY_IN_SECONDS)  except KeyboardInterrupt:    grpcServer.stop(0) # 關閉服務器if __name__ == '__main__':  serve()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人三级电影网址 | 全黄毛片 | 激情亚洲一区二区三区 | 国产精品国产三级国产在线观看 | 九九热在线精品视频 | 国产在线区 | 国产精品久久久久久久av | 可以看毛片的网址 | 欧美福利视频一区二区三区 | 香蕉在线看 | 黄色一级片毛片 | 久草在线综合网 | 在线观看国产www | 久久久久久久久久美女 | 久国产精品视频 | 国产亚洲黑人性受xxxx精品 | 曰批全过程40分钟免费视频多人 | 午夜精品视频在线 | 成人午夜免费福利 | 久久av一区二区 | 最新在线中文字幕 | 国产精品久久久久久久av | 国产精品久久久久久久久久 | 小视频免费在线观看 | 日韩视频一区二区在线观看 | 国产激情视频在线 | 黄色片在线免费播放 | 国产一区二区三区四区在线 | 久久精品国产99久久6动漫亮点 | 成人免费在线观看视频 | 久久综合久久美利坚合众国 | 国产免费一级淫片a级中文 99国产精品自拍 | 91福利免费观看 | 久久777国产线看观看精品 | 日韩在线激情 | 99视频有精品| 久久精品国产精品亚洲 | 国产精品久久久久久久久久了 | 亚洲国产视频在线 | 哪里可以看免费的av | 亚洲精品a级|