Python網(wǎng)絡(luò)編程之xmlrpc模塊_第1頁(yè)
Python網(wǎng)絡(luò)編程之xmlrpc模塊_第2頁(yè)
Python網(wǎng)絡(luò)編程之xmlrpc模塊_第3頁(yè)
Python網(wǎng)絡(luò)編程之xmlrpc模塊_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Python網(wǎng)絡(luò)編程之xmlrpc模塊rpc:遠(yuǎn)程過程調(diào)用協(xié)議。簡(jiǎn)單的來說就是客戶端可以很方便得遠(yuǎn)程調(diào)用服務(wù)端的接口程序,而不用管底層是如何實(shí)現(xiàn)的。

XML-RPC的全稱是XMLRemoteProcedureCall,即XML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)子集)遠(yuǎn)程過程調(diào)用。它是一套允許運(yùn)行在不同操作系統(tǒng)、不同環(huán)境的程序?qū)崿F(xiàn)基于Internet過程調(diào)用的規(guī)范和一系列的實(shí)現(xiàn)。這種遠(yuǎn)程過程調(diào)用使用http作為傳輸協(xié)議,XML作為傳送信息的編碼格式。Xml-Rpc的定義盡可能的保持了簡(jiǎn)單,但同時(shí)能夠傳送、處理、返回復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。這個(gè)過程也被大家稱為分布式計(jì)算。

xmlrpc:使用http協(xié)議作為傳輸協(xié)議的rpc機(jī)制。

1、注冊(cè)函數(shù):register_function

以下是定義了一個(gè)函數(shù)的xmlrpc服務(wù)端。

register_function用于注冊(cè)一個(gè)供調(diào)用的函數(shù),第一個(gè)參數(shù)為自己實(shí)現(xiàn)的方法名,第二個(gè)參數(shù)為供客戶端調(diào)用的方法名。

fromxmlrpc.serverimportSimpleXMLRPCServer#導(dǎo)入模塊

s=SimpleXMLRPCServer(("1",4242))#服務(wù)端ip假設(shè)為1,端口假設(shè)為4242

deftwice(x):#定義函數(shù)

returnx*2

s.register_function(twice)#注冊(cè)函數(shù)(讓客戶端發(fā)現(xiàn))

s.serve_forever()#啟動(dòng)服務(wù)端

下面是該服務(wù)端對(duì)應(yīng)的xmlrpc客戶端

根據(jù)url和端口號(hào)初始化一個(gè)服務(wù)器對(duì)象,然后調(diào)用需要的方法即可:

importxmlrpc.client#導(dǎo)入模塊

s=xmlrpc.client.ServerProxy('1:4242')#鏈接服務(wù)端

print(s.twice(2))#調(diào)用函數(shù)

調(diào)用成功成功后服務(wù)端會(huì)顯示

2、注冊(cè)類方法函數(shù):register_instance

服務(wù)端如:

fromxmlrpc.serverimportSimpleXMLRPCServer#導(dǎo)入模塊

s=SimpleXMLRPCServer(("7",4242))#設(shè)置服務(wù)端ip和端口

classAnimal:#定義類

defrabit(self,amount):

return4*amount

defchicken(self,amount):

return2*amount

s.register_instance(Animal())#注冊(cè)類方法函數(shù)(讓客戶端發(fā)現(xiàn))

s.serve_forever()#啟動(dòng)服務(wù)端

對(duì)應(yīng)的客戶端如下:

importxmlrpc.client#導(dǎo)入模塊

s=xmlrpc.client.ServerProxy('7:4242')#鏈接服務(wù)端

print(s.rabit(2))#調(diào)用函數(shù)

print(s.chicken(2))

3、dispatch方法

接下來要修改一些注冊(cè)類方法函數(shù)接口的參數(shù),對(duì)應(yīng)的修改一下類定義。通過在類定義中添加_dispatch方法可以在遠(yuǎn)程調(diào)用接口的時(shí)候經(jīng)過_dispach。

服務(wù)端如下:

fromxmlrpc.serverimportSimpleXMLRPCServer#導(dǎo)入模塊

s=SimpleXMLRPCServer(("7",4242))#設(shè)置服務(wù)端ip和端口

classAnimal:#定義類

def_dispatch(self,method,param):#定義_dispatch方法

print(method)#在服務(wù)端顯示調(diào)用的方法名

func=getattr(self,method)#調(diào)用接口

returnfunc(*param)

defrabit(self,amount):

return4*amount

defchicken(self,amount):

return2*amount

s.register_instance(Animal())#注冊(cè)函數(shù)(讓客戶端發(fā)現(xiàn))

s.serve_forever()#啟動(dòng)服務(wù)端

客戶端如下:

importxmlrpc.client#導(dǎo)入模塊

s=xmlrpc.client.ServerProxy('7:4242')#鏈接服務(wù)端

print(s.rabit(2))#調(diào)用函數(shù)

print(s.chicken(2))

注:服務(wù)器端運(yùn)行結(jié)果:

4、多線程訪問

初始化服務(wù)器用的不再是SimpleXMLRPCServer了,而是自定義的一個(gè)類,繼承自兩個(gè)基類,ThreadingMixIn使其能夠支持多線程,其余的操作方式還是和普通的一樣。

并且我們新增了一個(gè)函數(shù),接受兩個(gè)參數(shù),計(jì)算和,可以看到無

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論