python使用rpc框架gRPC的方法

2022-09-28 04:03:09 字數 2252 閱讀 7004

概述

grpc 是谷歌開源的乙個rpc(遠端程式呼叫)框架,可以輕鬆實現跨語言,跨平台程式設計,其採用grpc協議(基於http2)。

rpc:

remote procezdzcbxidure call, 翻譯過來就是是遠端程式呼叫。具體來說,就是客戶端c1需要呼叫伺服器s1上的某個方法(函式),得到相應的返回值並傳遞給c1。

grpc協議

要說grpc協議需要先了解http2, 雖然http1.x 協議至今仍是主流協議,但是隨著我們對效能要求越來越高,和web規模的不斷擴大,http2就應運而生。

在這裡,我們只需要知道其效能是高於現有的http1就好了,感興趣的朋友可以深入了解http2。

使用原因

在上家公司,因為之前的專案有一下幾個痛點,所以決定採用rpc框架:

所以我們花了點時間處理這些問題,將訂單,使用者等模組拆開,方便獨立部署,獨立公升級,獨立維護,這樣可以大大提高維護效率和專案的伸縮性。

使用方法

1.準備.proto檔案

syntax = "proto3";

package order;

message orderrequest

message jsonresponse

service orderhandler

}// 其zdzcbxi中:

// message: 定義資料結構

// service: 定義介面的名字,引數,

2.生成所需檔案(伺服器和客戶端均需要)

python -m grpc_tools.protoc -i./ --python_out=./ --grpc_python_out=./ ./*.proto

執行後會生成兩個檔案(test_pb2.py, test_pb2_grpc.py)

3.編寫server端**

import time

import test_pb2

import test_pb2_gzdzcbxirpc

import grpc

def test(request):

# 實際呼叫到的函式

json_response = t

json_response.rst_string = json.dumps()# 構造出proto檔案中定義的返回值格式

return json_response

class orderhandler(test_pb2_grpc.orderhandlerservicer):

'''grpc請求會進入這個類中進行分發,根據客戶端請求的方法找到對應的處理方法

感興趣的可以打斷點檢視request, context中的內容,他們包含了請求的所有資訊

'''def create_order(self, request, context):

return test(request, context)

def serve():

# 開啟grpc服務,監聽特定埠,

server = grpc.server(futures.threadpoolexecutor(max_workers=10))

test_pb2_grpc.add_orderhandlerservicer_to_server(

orderhandler(), server)

server.add_insecure_port('[::]:{}'.format(12006))

server.start()

try:

while true:

time.sleep(186400)

except keyboardinterrupt:

server.stop(0)

serve()

4.編寫客戶端**進行 測試 client.py

import grpc

import test_pb2_grpc

import test_pb2

channel = grpc.insecure_channel("127.0.0.1:12006")

stub = test_pb2_grpc.orderhandlerstub(channel)

# 要完成請求需要先構造出proto檔案中定義的請求格www.cppcns.com式

ret = stub.create_order(test_pb2.orderrequest(phone="12990", price="50"))

print(ret.rst_string)

本文標題: python使用rpc框架grpc的方法

本文位址:

實現RPC框架

什麼是rpc client端 student student call serveraddr,addage,student 1.將這個呼叫對映為call id。2.將call id,student params 序列化,以二進位制形式打包 3.把2中得到的資料報傳送給serveraddr,這需要使用...

rpc框架解釋

rpc是指遠端過程呼叫,也就是說兩台伺服器a,b,乙個應用部署在a伺服器上,想要呼叫b伺服器上應用提供的函式 方法,由於不在乙個記憶體空間,不能直接呼叫,需要通過網路來表達呼叫的語義和傳達呼叫的資料。首先,要解決通訊的問題,主要是通過在客戶端和伺服器之間建立tcp連線,遠端過程呼叫的所有交換的資料都...

RPC框架特性

既然是協議就只是一套規範,那麼就需要有人遵循這套規範來進行實現。目前典型的rpc實現包括 dubbo thrift grpc hetty等。既然rpc的客戶端認為自己是在呼叫本地物件。那麼傳輸層使用的是tcp udp還是http協議,者是一些其他的網路協議它就不需要關心了。既然網路協議對其透明,那麼...