欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用gRPC傳輸協議教程

 更新時間:2018年10月16日 11:01:54   作者:數據架構師  
今天小編就為大家分享一篇關于Python使用gRPC傳輸協議教程,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

gRPC 簡介:

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

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

# 實現了 server 端用于接收客戶端發(fā)送的數據,并對數據進行大寫處理后返回給客戶端
# ! /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'
# 實現一個派生類,重寫rpc中的接口函數.自動生成的grpc文件中比proto中的服務名稱多了一個Servicer
class 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是一個并發(fā)庫,類似于線程池的概念
  grpcServer = grpc.server(futures.ThreadPoolExecutor(max_workers=4))  # 創(chuàng)建一個服務器
  data_pb2_grpc.add_FormatDataServicer_to_server(FormatData(), grpcServer) # 在服務器中添加派生的接口服務(自己實現了處理函數)
  grpcServer.add_insecure_port(_HOST + ':' + _PORT)  # 添加監(jiān)聽端口
  grpcServer.start()  # 啟動服務器
  try:
    while True:
      time.sleep(_ONE_DAY_IN_SECONDS)
  except KeyboardInterrupt:
    grpcServer.stop(0) # 關閉服務器
if __name__ == '__main__':
  serve()

(4)創(chuàng)建實現能識別proto數據類和實現grpc傳輸協議.

# 實現了客戶端用于發(fā)送數據并打印接收到 server 端處理后的數據
# ! /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ā)送請求,參數為頻道,為了綁定鏈接
  print(client)
  response = client.DoFormat(data_pb2.actionrequest(text='hello,world!'))  # 返回的結果就是proto中定義的類
  print("received: " + response.text)
if __name__ == '__main__':
  run()

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

  • python實現自動化報表功能(Oracle/plsql/Excel/多線程)

    python實現自動化報表功能(Oracle/plsql/Excel/多線程)

    這篇文章主要介紹了python實現自動化報表(Oracle/plsql/Excel/多線程)的相關知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • python?opencv背景減去法摳圖實現示例

    python?opencv背景減去法摳圖實現示例

    這篇文章主要為大家介紹了python?opencv背景減去法摳圖實現示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • python如何生成隨機n位數字與字母組合(創(chuàng)建隨機)

    python如何生成隨機n位數字與字母組合(創(chuàng)建隨機)

    這篇文章主要介紹了python如何生成隨機n位數字與字母組合(創(chuàng)建隨機),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python中的數據分析詳解

    Python中的數據分析詳解

    這篇文章主要介紹了Python中的數據分析詳解,對數據進行分析,數據分析是指根據分析目的,用適當的統(tǒng)計分析方法及工具,對收集來的數據進行處理與分析,提取有價值的信息,發(fā)揮數據的作用,需要的朋友可以參考下
    2023-07-07
  • python的random和time模塊詳解

    python的random和time模塊詳解

    這篇文章主要介紹了python的random和time模塊,具有一定借鑒價值,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • 基于python 開立方的注意事項說明

    基于python 開立方的注意事項說明

    這篇文章主要介紹了基于python 開立方的注意事項說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python基于pygame實現的font游戲字體(附源碼)

    Python基于pygame實現的font游戲字體(附源碼)

    這篇文章主要介紹了Python基于pygame實現的font游戲字體,涉及Python響應鍵盤按鍵動態(tài)操作圖片元素的相關技巧,需要的朋友可以參考下
    2015-11-11
  • python DataFrame 取差集實例

    python DataFrame 取差集實例

    今天小編就為大家分享一篇python DataFrame 取差集實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python利用scapy實現ARP欺騙的方法

    Python利用scapy實現ARP欺騙的方法

    今天小編就為大家分享一篇Python利用scapy實現ARP欺騙的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • PyTorch清理CPU緩存的實現步驟

    PyTorch清理CPU緩存的實現步驟

    在使用PyTorch進行深度學習時,頻繁的數據和計算可能導致CPU緩存滿載,影響性能和內存使用,適時清理CPU緩存有助于管理內存占用,下面就來介紹一下如何使用
    2024-09-09

最新評論