日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python grpc 并发_在Python中使用gRPC的方法示例【h】

發(fā)布時(shí)間:2024/9/19 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python grpc 并发_在Python中使用gRPC的方法示例【h】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文介紹了在Python中使用gRPC的方法示例,分享給大家,具體如下:

使用Protocol Buffers的跨平臺(tái)RPC系統(tǒng)。

安裝

使用 pip

gRPC由兩個(gè)部分構(gòu)成,grpcio 和 gRPC 工具, 后者是編譯 protocol buffer 以及提供生成代碼的插件。

使用

編寫protocol buffer

使用 gRPC 首先需要做的是設(shè)計(jì) protocol buffer。新建一個(gè)?msg.proto?文件。

以上面的這個(gè)消息服務(wù)為例,首先是規(guī)定語法,這里使用的是?proto3?的語法。接著使用?service?關(guān)鍵字定義服務(wù),gRPC 提供4種 RPC 類型的服務(wù),這里定義的是第一種單一請(qǐng)求單一回應(yīng),類似普通的函數(shù)調(diào)用,其他的使用到了?stream?關(guān)鍵字,將其放在括號(hào)里,代表這個(gè)數(shù)據(jù)是流數(shù)據(jù)。這個(gè)以后再來研究,本次先設(shè)計(jì)一個(gè)簡單的RPC。

之后定義兩個(gè)?message?,一個(gè)是請(qǐng)求的結(jié)構(gòu),一個(gè)是回應(yīng)的結(jié)果。 這里表示這個(gè)數(shù)據(jù)結(jié)構(gòu)是字符串,protocol buffer 還可以定義為 int32,int64,double,float 等等。這里賦予的初值可以隨便填寫,實(shí)際使用中,會(huì)被賦予新的值。

生成接口代碼

因?yàn)橹鞍惭b好了一些輔助插件,使用這里直接可以生成。

這里會(huì)生成兩個(gè)文件,?msg_pb2.py?和?msg_pb2_grpc.py?。這兩個(gè)文件是為后續(xù)的服務(wù)端和客戶端所用。前者是定義了一些變量,例如?_MSGREQUEST?中就包含了請(qǐng)求函數(shù)的名字,可接受的變量,實(shí)際上還是?msg.proto?里定義的東西。

創(chuàng)建服務(wù)端

首先需要導(dǎo)入 RPC 必備的包,以及剛才生成的兩個(gè)文件。

因?yàn)?RPC 應(yīng)該長時(shí)間運(yùn)行,考慮到性能,還需要用到并發(fā)的庫。

在 Server 中,主要是實(shí)現(xiàn)服務(wù),按照?msg.proto?定義的,這里需要寫一個(gè)服務(wù)類?MsgServicer?,這個(gè)類需要實(shí)現(xiàn)之前定義的?GetMsg?。

GetMsg 接收到的請(qǐng)求是在?request?中,?msg.proto?中定義的?name?就是?request.name?,接著在 GetMsg 中設(shè)計(jì)?msg.proto?中定義的?MsgResponse?。

之后實(shí)現(xiàn)啟動(dòng)服務(wù)的部分即可。

通過并發(fā)庫,將服務(wù)端放到多進(jìn)程里運(yùn)行。

完整?msg_server.py?代碼如下

創(chuàng)建客戶端

客戶端相對(duì)簡單一些,這里我寫了一個(gè)簡單的客戶端。

使用?grpc.insecure_channel('localhost:50051')?進(jìn)行連接 服務(wù)端, 接著在這個(gè)?channel?上創(chuàng)建?stub?, 在?msg_pb2_grpc?里可以找到?MsgServiceStub?這個(gè)類相關(guān)信息。這個(gè)?stub?可以調(diào)用遠(yuǎn)程的?GetMsg?函數(shù)。?MsgRequest?中的?name?即?msg.proto?中定義的數(shù)據(jù)。在回應(yīng)里可以得到?msg.proto?中定義的?msg?。

運(yùn)行

首先運(yùn)行?python msg_server.py?啟動(dòng)服務(wù)端,接著運(yùn)行?python msg_client.py?機(jī)會(huì)看到客戶端接收到了服務(wù)端傳來的消息。以上就是一個(gè)簡單的 RPC 的使用。

總結(jié)

這里只是簡單的用了一下 gRPC,關(guān)于另外三種模式,還在摸索。比起gRPC,我感覺簡單 RestFul 更討我喜歡。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的python grpc 并发_在Python中使用gRPC的方法示例【h】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。