python grpc 并发_在Python中使用gRPC的方法示例【h】
本文介紹了在Python中使用gRPC的方法示例,分享給大家,具體如下:
使用Protocol Buffers的跨平臺RPC系統。
安裝
使用 pip
gRPC由兩個部分構成,grpcio 和 gRPC 工具, 后者是編譯 protocol buffer 以及提供生成代碼的插件。
使用
編寫protocol buffer
使用 gRPC 首先需要做的是設計 protocol buffer。新建一個?msg.proto?文件。
以上面的這個消息服務為例,首先是規定語法,這里使用的是?proto3?的語法。接著使用?service?關鍵字定義服務,gRPC 提供4種 RPC 類型的服務,這里定義的是第一種單一請求單一回應,類似普通的函數調用,其他的使用到了?stream?關鍵字,將其放在括號里,代表這個數據是流數據。這個以后再來研究,本次先設計一個簡單的RPC。
之后定義兩個?message?,一個是請求的結構,一個是回應的結果。 這里表示這個數據結構是字符串,protocol buffer 還可以定義為 int32,int64,double,float 等等。這里賦予的初值可以隨便填寫,實際使用中,會被賦予新的值。
生成接口代碼
因為之前安裝好了一些輔助插件,使用這里直接可以生成。
這里會生成兩個文件,?msg_pb2.py?和?msg_pb2_grpc.py?。這兩個文件是為后續的服務端和客戶端所用。前者是定義了一些變量,例如?_MSGREQUEST?中就包含了請求函數的名字,可接受的變量,實際上還是?msg.proto?里定義的東西。
創建服務端
首先需要導入 RPC 必備的包,以及剛才生成的兩個文件。
因為 RPC 應該長時間運行,考慮到性能,還需要用到并發的庫。
在 Server 中,主要是實現服務,按照?msg.proto?定義的,這里需要寫一個服務類?MsgServicer?,這個類需要實現之前定義的?GetMsg?。
GetMsg 接收到的請求是在?request?中,?msg.proto?中定義的?name?就是?request.name?,接著在 GetMsg 中設計?msg.proto?中定義的?MsgResponse?。
之后實現啟動服務的部分即可。
通過并發庫,將服務端放到多進程里運行。
完整?msg_server.py?代碼如下
創建客戶端
客戶端相對簡單一些,這里我寫了一個簡單的客戶端。
使用?grpc.insecure_channel('localhost:50051')?進行連接 服務端, 接著在這個?channel?上創建?stub?, 在?msg_pb2_grpc?里可以找到?MsgServiceStub?這個類相關信息。這個?stub?可以調用遠程的?GetMsg?函數。?MsgRequest?中的?name?即?msg.proto?中定義的數據。在回應里可以得到?msg.proto?中定義的?msg?。
運行
首先運行?python msg_server.py?啟動服務端,接著運行?python msg_client.py?機會看到客戶端接收到了服務端傳來的消息。以上就是一個簡單的 RPC 的使用。
總結
這里只是簡單的用了一下 gRPC,關于另外三種模式,還在摸索。比起gRPC,我感覺簡單 RestFul 更討我喜歡。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
總結
以上是生活随笔為你收集整理的python grpc 并发_在Python中使用gRPC的方法示例【h】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python文件操作的一般步骤_Pyth
- 下一篇: 埃及出土古罗马时期笑脸狮身人面像 还有两