Python中的 XML-RPC
来源:互联网 发布:数据库如何检索字符串 编辑:程序博客网 时间:2024/05/27 14:13
本文开头部分转载了一篇关于Python Rpc的入门介绍,来自:http://www.cnblogs.com/lxt287994374/p/3904219.html
一、简介
RPC是Remote Procedure Call的缩写,翻译成中文为:远程方法调用。
它是一种在本地机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。
XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。
它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。XML- RPC(http://www.xmlrpc.com)是由美国UserLand公司指定的一个RPC协议。简单的理解是:将数据定义为xml格式,通过http协议进行远程传输。
二、优点
1. 传输复杂的数据。
2. 通过程序语言的封装,实现远程对象的调用。
三、Python下的XML-RPC
类库:SimpleXMLRPCServer
一般使用在服务器端,这个模块用来构造一个最基本的XML-RPC服务器框架。
类库: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
打开一个终端,输入命令,运行服务器端程序:
python xmlrpc_server.py
打开另一个新的终端,输入命令,运行客户端程序:
python 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()
此时,服务器就支持多线程并发了。
- Python中的 XML-RPC
- Python RPC 之 xml-rpc
- Python XML-RPC
- Python XML-RPC入门
- 尝试Python的XML-RPC远程调用
- python 多线程 XML RPC的实现
- python多线程XML-RPC的实现
- python类库31[XML RPC实例]
- Python中关于XML-RPC原理
- The Python web services developer: XML-RPC for Python
- XML-RPC
- xml-rpc
- XML-RPC
- XML-RPC
- xml-rpc
- XML-RPC
- Python、PHP通过xml-rpc进行通信,xml-rpc中文的解决
- Python、PHP通过xml-rpc进行通信,xml-rpc中文的解决
- 06-图2 Saving James Bond
- Windows下JDK的下载及安装
- DOS远程桌面连接命令
- 改进卷积神经网络,你需要这14种设计模式(转载自机器之心微信号,mark一下当自己网络训练不好时可以看看)
- java语言的的基本特性和windows10环境下的搭建
- Python中的 XML-RPC
- 架构师之路
- 关于堆和栈的那些事儿
- 百度和谷歌搜索技巧总结
- 11-进程间通信-信号通信(功能:事件通知)
- centOS6.5 安装Amoeba实现mysql读写分离
- Activity、View、Window的理解
- uva712 -- S-Trees
- 编写高质量代码(一):慎用char