最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用gRPC傳輸協(xié)議教程

 更新時(shí)間:2018年10月16日 11:01:54   作者:數(shù)據(jù)架構(gòu)師  
今天小編就為大家分享一篇關(guān)于Python使用gRPC傳輸協(xié)議教程,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

gRPC 簡(jiǎn)介:

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

安裝:

gRPC 的安裝:

$ pip install grpcio

安裝 ProtoBuf 相關(guān)的 python 依賴庫:

$ pip install protobuf

安裝 python grpc 的 protobuf 編譯工具:

$ pip install grpcio-tools

GRPC使用案例

下看一下項(xiàng)目目錄結(jié)構(gòu)

grpc是一套傳輸協(xié)議,我們需要在底層實(shí)現(xiàn)這套傳輸協(xié)議.當(dāng)然這些工作都已經(jīng)被做完了,所以我們只要學(xué)會(huì)使用一個(gè)具有g(shù)rpc傳輸協(xié)議的服務(wù)器和在客戶端上調(diào)用grpc傳輸協(xié)議傳輸數(shù)據(jù)就可以了.

grpc傳輸協(xié)議傳輸?shù)臄?shù)據(jù)類型為protobuf數(shù)據(jù).所以grpc都是和protobuf一塊使用.

(1)新建data.proto文件,定義傳輸?shù)臄?shù)據(jù)格式和grpc服務(wù)要實(shí)現(xiàn)的函數(shù)

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

(2)生成proto數(shù)據(jù)的python調(diào)用格式和grpc服務(wù)接口

在proto文件目錄下 調(diào)用下列命令

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

會(huì)生成:data_pb2.py 與 data_pb2_grpc.py, 其中data_pb2.py是數(shù)據(jù)格式調(diào)用的文件,data_pb2_grpc.py是grpc傳輸協(xié)議接口調(diào)用的文件.

(3)創(chuàng)建實(shí)現(xiàn)了grpc傳輸協(xié)議的服務(wù)器端

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

# 實(shí)現(xiàn)了 server 端用于接收客戶端發(fā)送的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行大寫處理后返回給客戶端
# ! /usr/bin/env python
# -*- coding: utf-8 -*-
import grpc
import time
from concurrent import futures
from example import data_pb2, data_pb2_grpc
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
_HOST = 'localhost'
_PORT = '8080'
# 實(shí)現(xiàn)一個(gè)派生類,重寫rpc中的接口函數(shù).自動(dòng)生成的grpc文件中比proto中的服務(wù)名稱多了一個(gè)Servicer
class FormatData(data_pb2_grpc.FormatDataServicer):
  # 重寫接口函數(shù).輸入和輸出都是proto中定義的Data類型
  def DoFormat(self, request, context):
    str = request.text
    return data_pb2.actionresponse(text=str.upper()) # 返回一個(gè)類實(shí)例
def serve():
  # 定義服務(wù)器并設(shè)置最大連接數(shù),corcurrent.futures是一個(gè)并發(fā)庫,類似于線程池的概念
  grpcServer = grpc.server(futures.ThreadPoolExecutor(max_workers=4))  # 創(chuàng)建一個(gè)服務(wù)器
  data_pb2_grpc.add_FormatDataServicer_to_server(FormatData(), grpcServer) # 在服務(wù)器中添加派生的接口服務(wù)(自己實(shí)現(xiàn)了處理函數(shù))
  grpcServer.add_insecure_port(_HOST + ':' + _PORT)  # 添加監(jiān)聽端口
  grpcServer.start()  # 啟動(dòng)服務(wù)器
  try:
    while True:
      time.sleep(_ONE_DAY_IN_SECONDS)
  except KeyboardInterrupt:
    grpcServer.stop(0) # 關(guān)閉服務(wù)器
if __name__ == '__main__':
  serve()

(4)創(chuàng)建實(shí)現(xiàn)能識(shí)別proto數(shù)據(jù)類和實(shí)現(xiàn)grpc傳輸協(xié)議.

# 實(shí)現(xiàn)了客戶端用于發(fā)送數(shù)據(jù)并打印接收到 server 端處理后的數(shù)據(jù)
# ! /usr/bin/env python
# -*- coding: utf-8 -*-
import grpc
from example import data_pb2, data_pb2_grpc
_HOST = 'localhost'
_PORT = '8080'
def run():
  conn = grpc.insecure_channel(_HOST + ':' + _PORT) # 監(jiān)聽頻道
  print(conn)
  client = data_pb2_grpc.FormatDataStub(channel=conn)  # 客戶端使用Stub類發(fā)送請(qǐng)求,參數(shù)為頻道,為了綁定鏈接
  print(client)
  response = client.DoFormat(data_pb2.actionrequest(text='hello,world!'))  # 返回的結(jié)果就是proto中定義的類
  print("received: " + response.text)
if __name__ == '__main__':
  run()

客戶端鏈接的主機(jī)號(hào)和端口號(hào),必須是服務(wù)器創(chuàng)建的主機(jī)號(hào)和端口號(hào).

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • python2利用wxpython生成投影界面工具的圖文詳解

    python2利用wxpython生成投影界面工具的圖文詳解

    這篇文章主要介紹了python2利用wxpython生成投影界面工具的圖文詳解,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 如何使用Python的OpenCV庫處理圖像和視頻

    如何使用Python的OpenCV庫處理圖像和視頻

    基于opencv可以顯示圖片,并進(jìn)行相應(yīng)的處理,下面這篇文章主要給大家介紹了關(guān)于如何使用Python的OpenCV庫處理圖像和視頻的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Python獲取excel內(nèi)容及相關(guān)操作代碼實(shí)例

    Python獲取excel內(nèi)容及相關(guān)操作代碼實(shí)例

    這篇文章主要介紹了Python獲取excel內(nèi)容及相關(guān)操作代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python 循環(huán)遍歷字典元素的簡(jiǎn)單方法

    python 循環(huán)遍歷字典元素的簡(jiǎn)單方法

    下面小編就為大家?guī)硪黄猵ython循環(huán)遍歷字典元素的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • Python爬蟲解析網(wǎng)頁的4種方式實(shí)例及原理解析

    Python爬蟲解析網(wǎng)頁的4種方式實(shí)例及原理解析

    這篇文章主要介紹了Python爬蟲解析網(wǎng)頁的4種方式實(shí)例及原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Django中的session用法詳解

    Django中的session用法詳解

    這篇文章主要介紹了Django中的session用法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Keras 如何修改圖片通道的順序

    Keras 如何修改圖片通道的順序

    這篇文章主要介紹了Keras 修改圖片通道順序的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • pandas分區(qū)間,算頻率的實(shí)例

    pandas分區(qū)間,算頻率的實(shí)例

    今天小編就為大家分享一篇pandas分區(qū)間,算頻率的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 利用Python破解生日悖論問題

    利用Python破解生日悖論問題

    生日悖論,就是23個(gè)人在一個(gè)房間,期間必然有兩個(gè)人生日相同的概率為50%,30個(gè)人的話概率是70%,60個(gè)人甚至上升到99%。本文就來用Python語言破解這一問題,感興趣的可以了解一下
    2022-12-12
  • Python圖像處理庫PIL的ImageGrab模塊介紹詳解

    Python圖像處理庫PIL的ImageGrab模塊介紹詳解

    這篇文章主要介紹了Python圖像處理庫PIL的ImageGrab模塊介紹詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評(píng)論

江津市| 正蓝旗| 泌阳县| 长沙县| 来宾市| 广东省| 神农架林区| 辛集市| 榆树市| 黑山县| 阿克陶县| 紫云| 瓮安县| 连州市| 古蔺县| 钟祥市| 广水市| 石门县| 桐梓县| 南澳县| 古交市| 都江堰市| 潞西市| 鹤壁市| 阳新县| 涞源县| 福泉市| 辽阳县| 大渡口区| 遵化市| 新建县| 富顺县| 特克斯县| 克山县| 桐城市| 绵竹市| 天全县| 嘉义市| 巩留县| 竹溪县| 吉水县|