Python中使用XMLRPC(入门)

1、简介

  RPC是Remote Procedure Call的缩写,翻译成中文为:远程方法调用。python

它是一种在本地机器上调用远端机器上的一个过程(方法)的技术,这个过程也被你们称为“分布式计算”,是为了提升各个分立机器的“互操做性”而发明出来的技术。安全

  XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。服务器

它是一套容许运行在不一样操做系统、不一样环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http做为传输协议,XML做为传送信息的编码格式。Xml-Rpc的定义尽量的保持了简单,但同时可以传送、处理、返回复杂的数据结构。XML- RPC(http://www.xmlrpc.com)是由美国UserLand公司指定的一个RPC协议。简单的理解是:将数据定义为xml格式,经过http协议进行远程传输。数据结构

 

2、优势

1. 传输复杂的数据。
多线程

2. 经过程序语言的封装,实现远程对象的调用。并发


3、Python下的XML-RPC

1. 类库:SimpleXMLRPCServer框架

  通常使用在服务器端,这个模块用来构造一个最基本的XML-RPC服务器框架。分布式

2. 类库:xmlrpclib函数

  通常使用在客户端,这个模块用来调用注册在XML-RPC服务器端的函数,xmlrpclib并非一个类型安全的模块,没法抵御恶意构造的数据,这方面的一些处理工做须要交给开发者本身。编码

 

大体用法:使用SimpleXMLRPCServer模块运行XMLRPC服务器,在其中注册服务器提供的函数或者对象;而后在客户端内使用xmlrpclib.ServerProxy链接到服务器,想要调用服务器的函数,直接调用ServerProxy便可。

 

简单实例:hello xmlprc

服务器端:xmlrpc_server.py

import SimpleXMLRPCServer

class 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 xmlrpclib

server = xmlrpclib.ServerProxy("http://localhost:8088")

words = server.sayHello()

print "result:" + words

 

  打开一个终端,输入命令,运行服务器端程序:

chmod u+x xmlrpc_server.py
python xmlrpc_server.py

打开另外一个新的终端,输入命令,运行客户端程序:
chmod u+x xmlrpc_client.py
python xmlrpc_client.py

能够看到客户端控制台上输出了:hello xmlprc。如图:




附:
SimpleXMLRPCServer是一个单线程的服务器。
这意味着,若是几个客户端同时发出多个请求,其它的请求就必须等待第一个请求完成之后才能继续。
若修改服务器端以下:
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SocketServer import ThreadingMixIn
class ThreadXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer):pass

class 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()

 此时,服务器就支持多线程并发了。

相关文章
相关标签/搜索