Python 遠程過程調(diào)用
python 遠程過程調(diào)用
遠程過程調(diào)用(rpc)系統(tǒng)使我們可以使用在本地庫中調(diào)用函數(shù)時所使用的語法來調(diào)用遠程服務(wù)器上可用的函數(shù)。這在兩種情況下很有用:
- 使用rpc利用多臺計算機的處理能力,而無需更改用于調(diào)用遠程系統(tǒng)中程序的代碼。
- 處理所需的數(shù)據(jù)僅在遠程系統(tǒng)中可用。
因此,在python中,可以將一臺計算機視為服務(wù)器,將另一臺計算機視為客戶端,這將對服務(wù)器進行調(diào)用以運行遠程過程。在下面示例中,我們將使用localhost并將其用作服務(wù)器和客戶端。
1. 運行服務(wù)器
內(nèi)置服務(wù)器附帶python語言,可以將其作為本地服務(wù)器運行。運行該服務(wù)器的腳本位于python安裝的bin文件夾下,腳本名為classic.py??梢栽趐ython提示符下運行它,并檢查它是否在本地服務(wù)器上運行。
# filename : example.py
# copyright : 2020 by yapf
# author by : www.slktour.com
# date : 2020-08-25
$ python bin/classic.py
當運行上面的程序時,得到以下輸出:
# filename : example.py
# copyright : 2020 by yapf
# author by : www.slktour.com
# date : 2020-08-25
info:slave/18812:server started on [127.0.0.1]:18812
2. 運行客戶端
接下來,使用rpyc模塊運行客戶端以執(zhí)行遠程過程調(diào)用。下面的示例中,在遠程服務(wù)器中執(zhí)行打印功能。
# filename : example.py
# copyright : 2020 by yapf
# author by : www.slktour.com
# date : 2020-08-25
import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute("print('hello from yapf')")
當運行上面的程序時,得到以下輸出:
# filename : example.py
# copyright : 2020 by yapf
# author by : www.slktour.com
# date : 2020-08-25
hello from yapf
3. 通過rpc進行表達評估
使用上面的代碼示例,可以使用python的內(nèi)置函數(shù)通過rpc執(zhí)行和評估表達式。
# filename : example.py
# copyright : 2020 by yapf
# author by : www.slktour.com
# date : 2020-08-25
import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute('import math')
conn.eval('2*math.pi')
當運行上面的程序時,得到以下輸出:
# filename : example.py
# copyright : 2020 by yapf
# author by : www.slktour.com
# date : 2020-08-25
6.283185307179586