欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python中gRPC框架的使用-創(chuàng)新互聯(lián)

簡介

gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。目前提供 C、Java 和 Go 語言版本,分別是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持。gRPC 基于 HTTP/2 標準設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接上的多復用請求等特。這些特性使得其在移動設備上表現(xiàn)更好,更省電和節(jié)省空間占用。gRPC 提供了一種簡單的方法來定義服務,同時客戶端可以充分利用 HTTP/2 stream 的特性,從而有助于節(jié)省帶寬、降低 TCP 的連接次數(shù)、節(jié)省CPU的使用等

為黃南州等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及黃南州網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都做網(wǎng)站、網(wǎng)站設計、黃南州網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

Python中gRPC框架的使用

gRPC 默認使用 protocol buffers,這是 Google 開源的一種輕便高效的結構化數(shù)據(jù)存儲格式,可以用于結構化數(shù)據(jù)串行化,或者說序列化。它很適合做數(shù)據(jù)存儲或 RPC 數(shù)據(jù)交換格式。

安裝

官方參考文檔

  • gRPC 的安裝:
$ pip install grpcio
  • 安裝 ProtoBuf 相關的 python 依賴庫:
    $ pip install protobuf
  • 安裝 python grpc 的 protobuf 編譯工具:
    $ pip install grpcio-tools

實踐

定義一個消息類型

先來看一個非常簡單的例子。假設你想定義一個“搜索請求”的消息格式,每一個請求含有一個查詢字符串、你感興趣的查詢結果所在的頁數(shù),以及每一頁多少條查詢結果。可以采用如下的方式來定義消息類型的.proto文件了:

syntax = "proto3";  // 聲明使用 proto3 語法

message SearchRequest {
  string query = 1;  // 每個字段都要指定數(shù)據(jù)類型
  int32 page_number = 2; // 這里的數(shù)字2 是標識符,最小的標識號可以從1開始,大到2^29 - 1, or 536,870,911。不可以使用其中的[19000-19999]
  int32 result_per_page = 3; // 這里是注釋,使用 //
}
  • 文章的第一行指定了你正在使用 proto3 語法:如果不指定,編譯器會使用 proto2。這個指定語法必須是文件的非空非注釋的第一行。
  • SearchRequest消息格式有三個字段,在消息中承載的數(shù)據(jù)分別對應于每一個字段。其中每個字段都有一個名字和一種類型。
  • 向.proto文件添加注釋,可以使用C/C++/java風格的雙斜杠(//) 語法格式。
  • 在消息體中,每個字段都有唯一的一個數(shù)字標識符。這些標識符用來在消息的二進制格式中識別各個字段,一旦開始使用就不能再改變。

[1,15]之內的標識號在編碼的時候會占用一個字節(jié)。[16,2047]之內的標識號則占用2個字節(jié)。所以應該為那些頻繁出現(xiàn)的消息元素保留 [1,15]之內的標識號。切記:要為將來有可能添加的、頻繁出現(xiàn)的標識號預留一些標識號。

指定字段規(guī)則

所指定的消息字段修飾符必須是如下之一:

  • singular:一個格式良好的消息應該有0個或者1個這種字段(但是不能超過1個)。
  • repeated:在一個格式良好的消息中,這種字段可以重復任意多次(包括0次)。重復的值的順序會被保留。
    在proto3中,repeated的標量域默認情況蝦使用packed。
數(shù)值類型

一個標量消息字段可以含有一個如下的類型——該表格展示了定義于.proto文件中的類型,以及與之對應的、在自動生成的訪問類中定義的類型:
Python中gRPC框架的使用

默認值

當一個消息被解析的時候,如果被編碼的信息不包含一個特定的singular元素,被解析的對象鎖對應的域被設置位一個默認值,對于不同類型指定如下:

  • 對于strings,默認是一個空string
  • 對于bytes,默認是一個空的bytes
  • 對于bools,默認是false
  • 對于數(shù)值類型,默認是0
  • 對于枚舉,默認是第一個定義的枚舉值,必須為0;
  • 對于消息類型(message),域沒有被設置,確切的消息是根據(jù)語言確定的,詳見generated code guide
  • 對于可重復域的默認值是空(通常情況下是對應語言中空列表)。
嵌套類型

你可以在其他消息類型中定義、使用消息類型,在下面的例子中,Result消息就定義在SearchResponse消息內,如:

message SearchResponse {
  message Result {
   string url = 1;
   string title = 2;
   repeated string snippets = 3;
  }
  repeated Result results = 1;
}

在 message SearchResponse 中,定義了嵌套消息 Result,并用來定義SearchResponse消息中的results域。

Protobuf 文件編譯

從.proto文件生成了什么?

當用protocol buffer編譯器來運行.proto文件時,編譯器將生成所選擇語言的代碼,這些代碼可以操作在.proto文件中定義的消息類型,包括獲取、設置字段值,將消息序列化到一個輸出流中,以及從一個輸入流中解析消息。

  • 對C++來說,編譯器會為每個.proto文件生成一個.h文件和一個.cc文件,.proto文件中的每一個消息有一個對應的類。
  • 對Java來說,編譯器為每一個消息類型生成了一個.java文件,以及一個特殊的Builder類(該類是用來創(chuàng)建消息類接口的)。
  • 對Python來說,有點不太一樣——Python編譯器為.proto文件中的每個消息類型生成一個含有靜態(tài)描述符的模塊,,該模塊與一個元類(metaclass)在運行時(runtime)被用來創(chuàng)建所需的Python數(shù)據(jù)訪問類。
  • 對go來說,編譯器會位每個消息類型生成了一個.pd.go文件。
  • 對于Ruby來說,編譯器會為每個消息類型生成了一個.rb文件。
  • javaNano來說,編譯器輸出類似域java但是沒有Builder類
  • 對于Objective-C來說,編譯器會為每個消息類型生成了一個pbobjc.h文件和pbobjcm文件,.proto文件中的每一個消息有一個對應的類。
  • 對于C#來說,編譯器會為每個消息類型生成了一個.cs文件,.proto文件中的每一個消息有一個對應的類。

Python gRPC 示例

gRPC_DEMO  GitHub源碼

編譯

使用以下命令編譯:

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

生成了兩個文件:

  • hello_pb2.py 此文件包含生成的 request(HelloRequest) 和 response(HelloReply) 類。
  • hello_pb2_grpc.py 此文件包含生成的 客戶端(GreeterStub)和服務端(GreeterServicer)的類。
創(chuàng)建服務端代碼

創(chuàng)建和運行 Greeter 服務可以分為兩個部分:

  • 實現(xiàn)我們服務定義的生成的服務接口:做我們的服務的實際的“工作”的函數(shù)。

  • 運行一個 gRPC 服務器,監(jiān)聽來自客戶端的請求并傳輸服務的響應。
創(chuàng)建客戶端代碼

見gRPC_DEMO  GitHub源碼

運行代碼
  1. 首先運行服務端代碼

    python server/main.py
  2. 然后運行客戶端代碼

    python client/main.py
       輸出:
         >>> Greeter client received: Hello, goodspeed!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享文章:Python中gRPC框架的使用-創(chuàng)新互聯(lián)
新聞來源:http://aaarwkj.com/article42/ppdec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、做網(wǎng)站定制網(wǎng)站、Google企業(yè)網(wǎng)站制作、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
欧美三级精品三级在线| 日韩精品一区伦理视频| 欧美激情在线精品一区二区| 91在线国内在线观看| 日韩高清精品视频在线| 久久五十路初次拍五十路| 亚洲成人av在线直播| 日韩免费av在线观看| 亚洲欧美午夜不卡视频| 日韩视频免费看一区二区| 日本熟女肥臀一区二区| 欧美日韩一区二区三区666| 久久亚洲中文字幕乱码| 日韩精品一区二区91| 亚洲一区二区美女av| 亚洲乱码中文字幕人妻| 日韩不卡的一区免费视频| 日韩av熟女人妻一区二| 国产精品视频不卡免费看| 在线免费观看午夜视频| 日韩在线欧美在线一区二区| 日韩三级成人在线视频| 欧美一区二区三区日| 成人午夜三级在线观看| av第一福利大全导航| 国产av一级二级三级最新精品| 一级片一区二区中文字幕| 亚洲成人av在线播放观看| 久久亚洲精品中文字幕一| 天天操天天射夜夜撸| 一本色桃子精品久久中文字幕| 激情综合婷婷中文字幕| 九九久久亚洲av成人乱片| 午夜理论片在线观看有码| 国产视频专区一区二区| 亚洲国产欧美一区三区成人| 国产成人免费视频大全| 中文字幕日韩在线欧美一区| 国产欧美日韩另类在线播放| 亚洲综合偷拍欧美一区色| 在线国产视频一区二区三区|