python grpc 并发_在Python中使用gRPC的方法示例【h】
本文介紹了在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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python文件操作的一般步骤_Pyth
- 下一篇: 埃及出土古罗马时期笑脸狮身人面像 还有两