#rpc
1.什麼是rpc
rpc 就是為解決服務之間資訊互動而發明和存在的。
rpc(remote procedure call)——遠端過程呼叫,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。 rpc採用客戶機/伺服器模式。請求程式就是乙個客戶機,而服務提供程式就是乙個伺服器。
首先,客戶機呼叫程序傳送乙個有程序引數的呼叫資訊到服務程序,然後等待應答資訊。
在伺服器端,程序保持睡眠狀態直到呼叫資訊到達為止。
當乙個呼叫資訊到達,伺服器獲得程序引數,計算結果,傳送答覆資訊
然後等待下乙個呼叫資訊,最後,客戶端呼叫程序接收答覆資訊,獲得程序結果,然後呼叫執行繼續進行。
rpc就是一種遠端呼叫函式介面的方式,說白了,就是一種遠端呼叫函式介面的方式,客戶端和服務端之間約定一種契約(函式介面),然後服務端一直等待客戶端的呼叫。
有點像平常的web網路請求。
一種用途是在多台伺服器之間互相進行呼叫。
另乙個用途則在於,不同程式語言之間都支援這種方式,像python更是內建對其的支援,不需要額外安裝什麼庫,所以可以直接在多語言的伺服器之間互相進行呼叫。
socket程式設計就是rpc通訊
2.xmlrp庫
簡單的服務端
像web請求一樣,我們需要確定供客戶端訪問的url和埠號,以及供客戶端呼叫的方法實現,最後要讓我們伺服器一直處於等待被訪問的狀態:
rpc_server.py
from xmlrpc.server import ******xmlrpcserver
# 呼叫函式
def respon_string(str):
return "get string:%s"%str
if __name__ == '__main__':
server = ******xmlrpcserver(('localhost', 8888)) # 初始化
server.register_function(respon_string, "get_string") # 註冊get_string函式
print ("listening for client")
server.serve_forever() # 保持等待呼叫狀態
rpc_client.py
from xmlrpc.client import serverproxy
if __name__ == '__main__':
server = serverproxy("http://localhost:8888") # 初始化伺服器
print (server.get_string("rpc rpc")) # 呼叫get_string函式並傳參,呼叫get_string讓服務端通過respon_string函式處理請求,並返回。
操作#服務端啟動:
[root@xujunk tmp]#python3 rpc_server.py
listening for client
#客戶端啟動:
[root@xujunk tmp]#python3 rpc_client.py
get string:rpc rpc#返回結果
#服務端接到請求:
內網centos7伺服器離線安裝python環境
專案要部署到內網,所以需要離線安裝python環境。系統是剛安裝的centos7,系統資訊 linux 3.10.0 1062.el7.x86 64 1 smp wed aug 718 08 02utc 2019 x86 64 x86 64 x86 64 gnu linux 12.14日更新 第一種...
用SourceInsight閱讀Python工程
首先從http www.sourceinsight.com public languages python.clf 然後對sourceinsight作如下配置 1 選擇options preferences,單擊languages選項 2 單擊import按鈕,裝載並匯入python.clf 3 這...
socketserver實現併發(Python)
server類 處理鏈結 request類 處理通訊 基於tcp 服務端 import socketserver class myserver socketserver.baserequesthandler def handle self print self.request conn print ...