python rpc服務 python與RPC服務

2021-10-13 05:54:46 字數 1652 閱讀 3793

#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 ...