protobuf及grpc的client請(qǐng)求

背景:
需要對(duì)rpc服務(wù)進(jìn)行壓測(cè)俩功,需要構(gòu)造rpc請(qǐng)求喝峦。

protobuf 簡(jiǎn)介
Protocol Buffer (簡(jiǎn)稱Protobuf) 是Google出品的性能優(yōu)異牲芋、跨語(yǔ)言惠险、跨平臺(tái)的序列化庫(kù)舔糖。

文檔結(jié)構(gòu)
protobuf 使用 .proto 文件來保存文檔。

syntax = "proto3";
package cw.videoanalyze.alg_plugin;

message AlgPluginObject {
    string plugin_name = 1;             // 插件名稱(必須要填寫)
    uint64 UOID = 2;                    // UOID (非必須)
    string plugin_func = 3;             // 插件方法
}

message AlgPluginRequest {
    AlgPluginObject plugin = 1;         // 插件對(duì)象
    bytes serialize_data = 2;           // 序列化數(shù)據(jù)(無關(guān)數(shù)據(jù))
}


message AlgPluginResponse {
    AlgPluginObject plugin = 1;         // 插件對(duì)象
    bool ret_flag = 2;                  // 響應(yīng)結(jié)果
    int32 error_no = 3;                 // 錯(cuò)誤碼莺匠,當(dāng)ret_flag = false 時(shí)有用
    string message = 4;                 // 返回消息
    bytes serialize_data = 5;           // 返回的序列化數(shù)據(jù)
}

/*
 * 插件上報(bào)數(shù)據(jù)
 * 說明: 該數(shù)據(jù)中包換了插件上報(bào)的所有的圖片,抓拍坐標(biāo)十兢,屬性等數(shù)據(jù)
 */
message AlgPluginReport {
    AlgPluginObject plugin = 1;         // 插件對(duì)象
    string camera_id = 2;               // 攝像頭ID
    bytes serialize_data = 3;           // 序列化數(shù)據(jù)(無關(guān)數(shù)據(jù))
}

/*
 * 插件上報(bào)RPC接口
 */
service AlgReportPush {
    rpc Report (AlgPluginReport) returns (AlgPluginResponse);
    rpc Request (AlgPluginRequest) returns (AlgPluginResponse);
}
  1. protobuf 文檔的第一行趣竣,為版本申明,不填寫默認(rèn)為版本2.
  2. package 定義proto的包名旱物,包名可以避免對(duì)message 類型之間的名字沖突遥缕。也可省略。
  3. message 關(guān)鍵字定義消息宵呛。
  4. service 關(guān)鍵字定義服務(wù)单匣。

定義消息
protobuf使用message定義消息,例如:

message AlgPluginObject {
    string plugin_name = 1;             // 插件名稱(必須要填寫)
    uint64 UOID = 2;                    // UOID (非必須)
    string plugin_func = 3;             // 插件方法
}

AlgPluginObject消息定義了三個(gè)字段宝穗,分別為插件名稱户秤,U0ID及插件方法。
消息定義中的每個(gè)字段都有唯一的編號(hào)逮矛。這些字段編號(hào)用于以消息二進(jìn)制格式標(biāo)識(shí)字段鸡号,并且在使用消息類型后不應(yīng)更改

定義服務(wù)
定義RPC方法,需要使用service關(guān)鍵字定義服務(wù)须鼎,并在里面定義方法鲸伴。

/*
 * 插件上報(bào)RPC接口
 */
service AlgReportPush {
    rpc Report (AlgPluginReport) returns (AlgPluginResponse);
    rpc Request (AlgPluginRequest) returns (AlgPluginResponse);
}

此處定義了一個(gè)AlgReportPush服務(wù),包含兩個(gè)rpc方法:

  • Reprot 方法晋控,入?yún)锳lgPluginReport汞窗,返回參數(shù)為 AlgPluginResponse
  • Request 方法,入?yún)锳lgPluginRequest赡译,返回參數(shù)為 AlgPluginResponse

下面針對(duì)上面的proto文件仲吏,寫一個(gè)grpc client 進(jìn)行rpc請(qǐng)求。

import grpc
import va_plugin_proto_pb2_grpc
import va_plugin_proto_pb2
import VideoObjectPush_pb2

def get_bytes():
    img = 'D:\\10w\\1.jpg'
    with open(img,'rb') as f:
        bytes_data = f.read()
    return bytes_data

def run():
    # 連接RPC服務(wù)器
    channel = grpc.insecure_channel('localhost:21001')
    # 調(diào)用RPC服務(wù)
    stub = va_plugin_proto_pb2_grpc.AlgReportPushStub(channel=channel)
    #組裝請(qǐng)求參數(shù)
    alg_plugin_obj = va_plugin_proto_pb2.AlgPluginObject(plugin_name='videostream.person',plugin_func='videostream.person.return_callback')
    box = VideoObjectPush_pb2.Box(x=1,y=1,width=1,height=1)
    face = VideoObjectPush_pb2.Object(box=box,objPic=get_bytes(),qualityScore=0.656565,confidenceScore=0.13265,
                                      pts=1546272000000)
    person = VideoObjectPush_pb2.Person(objectId=1,cameraId="xiuxiqu",face=face)
    object = VideoObjectPush_pb2.DetectedObject(person=person)

    resp = stub.Report(va_plugin_proto_pb2.AlgPluginReport(plugin=alg_plugin_obj,camera_id='xiuxiqu',serialize_data=object.SerializeToString()))
    print(resp)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捶朵,一起剝皮案震驚了整個(gè)濱河市蜘矢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌综看,老刑警劉巖品腹,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異红碑,居然都是意外死亡舞吭,警方通過查閱死者的電腦和手機(jī)泡垃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羡鸥,“玉大人蔑穴,你說我怎么就攤上這事【逶。” “怎么了存和?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)衷旅。 經(jīng)常有香客問我捐腿,道長(zhǎng),這世上最難降的妖魔是什么柿顶? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任茄袖,我火速辦了婚禮,結(jié)果婚禮上嘁锯,老公的妹妹穿的比我還像新娘宪祥。我一直安慰自己,他們只是感情好家乘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布蝗羊。 她就那樣靜靜地躺著,像睡著了一般烤低。 火紅的嫁衣襯著肌膚如雪肘交。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天扑馁,我揣著相機(jī)與錄音涯呻,去河邊找鬼。 笑死腻要,一個(gè)胖子當(dāng)著我的面吹牛复罐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雄家,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼效诅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了趟济?” 一聲冷哼從身側(cè)響起乱投,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎顷编,沒想到半個(gè)月后戚炫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡媳纬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年双肤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了施掏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茅糜,死狀恐怖七芭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔑赘,我是刑警寧澤狸驳,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站缩赛,受9級(jí)特大地震影響锌历,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜峦筒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窗慎。 院中可真熱鬧物喷,春花似錦、人聲如沸遮斥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)术吗。三九已至尉辑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間较屿,已是汗流浹背隧魄。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隘蝎,地道東北人购啄。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嘱么,于是被迫代替她去往敵國(guó)和親狮含。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 翻譯查閱外網(wǎng)資料過程中遇到的比較優(yōu)秀的文章和資料曼振,一是作為技術(shù)參考以便日后查閱几迄,二是訓(xùn)練英文能力。此文翻譯自 Pr...
    401閱讀 67,160評(píng)論 1 39
  • 定義一個(gè)消息類型指定字段類型分配標(biāo)識(shí)號(hào)指定字段規(guī)則添加更多消息類型添加注釋保留標(biāo)識(shí)符(Reserved)從.pro...
    MrChenyz閱讀 2,381評(píng)論 0 0
  • 原文出處:gRPC gRPC分享 概述 gRPC 一開始由 google 開發(fā)冰评,是一款語(yǔ)言中立映胁、平臺(tái)中立、開源的遠(yuǎn)...
    小波同學(xué)閱讀 7,199評(píng)論 0 18
  • 轉(zhuǎn)載自:http://blog.csdn.net/yeasy/article/details/52190007集索。 ...
    sirai閱讀 3,445評(píng)論 1 1
  • 今天感恩節(jié)哎屿愚,感謝一直在我身邊的親朋好友汇跨。感恩相遇!感恩不離不棄妆距。 中午開了第一次的黨會(huì)穷遂,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,551評(píng)論 0 11