所謂RPC,是遠端過程呼叫(Remote Procedure Call)的簡寫,網上解釋很多,簡單來說,就是在當前程序呼叫其他程序的函式時,體驗就像是呼叫本地寫的函式一般。
本文實現的是在本地呼叫遠端的類class物件的介面,也就是本地的client不例項化類物件,呼叫的是server端的類物件介面。
為了達到讓呼叫層無須關心底層實現,擁有絲滑般的體驗,就需要以下幾個部分:
客戶端需要把類的介面提取出來,並將呼叫函式事件捕獲儲存起來;服務端需要把類的公有函式作為可遠端呼叫的介面。
客戶端把呼叫函式的事件(呼叫的函式,引數)進行序列化併發送給服務端;服務端將客戶端的呼叫事件反序列化,並執行相應的介面,將返回值傳送給客戶端。
客戶端與服務端通過某種方式(一般就是網路socket)進行通訊。
1 .安裝 thriftpy2
pip3 install thriftpy2
2.服務端 server.pys
import thriftpy2
from thriftpy2.rpc import make_server pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift") class Dispatcher(object):
def ping(self):
return "pong" server = make_server(pingpong_thrift.PingPong,Dispatcher(),"127.0.0.1",6000)
server.serve()
3.pingpong.thrit
service PingPong{
string ping(),
}
4.client.py
import thriftpy2 pingpong_thrift = thriftpy2.load("pingpong.thrift", module_name="pingpong_thrift") from thriftpy2.rpc import make_client client = make_client(pingpong_thrift.PingPong, '127.0.0.1', 6000)
print(client.ping())
啟動server.py,執行client.py後即可檢視到服務端函式的結果。