Python中使用XMLRPC(入門)

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   strong   資料   

一、簡介

  RPC是Remote Procedure Call的縮寫,翻譯成中文為:遠程方法調用。

它是一種在本地機器上調用遠端機器上的一個過程(方法)的技術,這個過程也被大家稱為“分散式運算”,是為了提高各個分立機器的“互通性”而發明出來的技術。

  XML-RPC的全稱是XML Remote Procedure Call,即XML遠程方法調用。

它是一套允許運行在不同作業系統、不同環境的程式實現基於Internet程序呼叫的規範和一系列的實現。這種遠端程序呼叫使用http作為傳輸協議,XML作為傳送資訊的編碼格式。Xml-Rpc的定義儘可能的保持了簡單,但同時能夠傳送、處理、返回複雜的資料結構。XML- RPC(http://www.xml-rpc.com)是由美國UserLand公司指定的一個RPC協議。簡單的理解是:將資料定義為xml格式,通過http協議進行遠程傳輸。

 

二、優點

1. 傳輸複雜的資料。

2. 通過程式語言的封裝,實現遠程對象的調用。


三、Python下的XML-RPC

1. 類庫:SimpleXMLRPCServer

  一般使用在伺服器端,這個模組用來構造一個最基本的XML-RPC伺服器架構。

2. 類庫:xmlrpclib

  一般使用在用戶端,這個模組用來調用註冊在XML-RPC伺服器端的函數,xmlrpclib並不是一個型別安全的模組,無法抵禦惡意構造的資料,這方面的一些處理工作需要交給開發人員自己。

 

大致用法:使用SimpleXMLRPCServer模組運行XMLRPC伺服器,在其中註冊伺服器提供的函數或者對象;然後在用戶端內使用xmlrpclib.ServerProxy串連到伺服器,想要調用伺服器的函數,直接調用ServerProxy即可。

 

簡單一實例:hello xmlprc

伺服器端:xmlrpc_server.py

import SimpleXMLRPCServerclass MyObject:    def sayHello(self):        return "hello xmlprc"obj = MyObject()server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8088))server.register_instance(obj)print "Listening on port 8088"server.serve_forever()

 

用戶端:xmlrpc_client.py

import xmlrpclibserver = xmlrpclib.ServerProxy("http://localhost:8088")words = server.sayHello()print "result:" + words

 

  開啟一個終端,輸入命令,運行伺服器端程式:

chmod u+x xmlrpc_server.pypython xmlrpc_server.py

開啟另一個新的終端,輸入命令,運行用戶端程式:
chmod u+x xmlrpc_client.pypython xmlrpc_client.py

可以看到用戶端控制台上輸出了:hello xmlprc。




附:
SimpleXMLRPCServer是一個單線程的伺服器。這意味著,如果幾個用戶端同時發出多個請求,其它的請求就必須等待第一個請求完成以後才能繼續。
若修改伺服器端如下:
from SimpleXMLRPCServer import SimpleXMLRPCServerfrom SocketServer import ThreadingMixInclass ThreadXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer):passclass MyObject:    def sayHello(self):        return "hello xmlprc"obj = MyObject()server = ThreadXMLRPCServer(("localhost", 8088), allow_none=True)server.register_instance(obj)print "Listening on port 8088"server.serve_forever()

 此時,伺服器就支援多線程並發了。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.