Python XML RPC服务器端和客户端实例


Posted in Python onNovember 22, 2014

一、远程过程调用RPC

XML-RPC is a Remote Procedure Call method that uses XML passed via HTTP as a transport. With it, a client can call methods with parameters on a remote server (the server is named by a URI) and get back structured data. This module supports writing XML-RPC client code; it handles all the details of translating between conformable Python objects and XML on the wire.

简单地,client可以调用server上提供的方法,然后得到执行的结果。类似与webservice。

推荐查看xmlprc的源文件:C:\Python31\Lib\xmlrpc

二、实例

1) Server

from xmlrpc.server import SimpleXMLRPCServer

from xmlrpc.server import SimpleXMLRPCRequestHandler
def div(x,y):

    return x - y

    

class Math:

    def _listMethods(self):

        # this method must be present for system.listMethods

        # to work

        return ['add', 'pow']

    def _methodHelp(self, method):

        # this method must be present for system.methodHelp

        # to work

        if method == 'add':

            return "add(2,3) => 5"

        elif method == 'pow':

            return "pow(x, y[, z]) => number"

        else:

            # By convention, return empty

            # string if no help is available

            return ""

    def _dispatch(self, method, params):

        if method == 'pow':

            return pow(*params)

        elif method == 'add':

            return params[0] + params[1]

        else:

            raise 'bad method'
server = SimpleXMLRPCServer(("localhost", 8000))

server.register_introspection_functions()

server.register_function(div,"div")

server.register_function(lambda x,y: x*y, 'multiply')

server.register_instance(Math())

server.serve_forever()

2)client

import xmlrpc.client
s = xmlrpc.client.ServerProxy('http://localhost:8000')
print(s.system.listMethods())
print(s.pow(2,3))  # Returns 28

print(s.add(2,3))  # Returns 5

print(s.div(3,2))  # Returns 1

print(s.multiply(4,5)) # Returns 20

3)result

Python XML RPC服务器端和客户端实例

Python 相关文章推荐
跟老齐学Python之集成开发环境(IDE)
Sep 12 Python
Python greenlet实现原理和使用示例
Sep 24 Python
Python 的 Socket 编程
Mar 24 Python
详解Python中heapq模块的用法
Jun 28 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
python生成n个元素的全组合方法
Nov 13 Python
Python sep参数使用方法详解
Feb 12 Python
python中数据库like模糊查询方式
Mar 02 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 #Python
python进程类subprocess的一些操作方法例子
Nov 22 #Python
Python读取环境变量的方法和自定义类分享
Nov 22 #Python
Python中的引用和拷贝浅析
Nov 22 #Python
python实现的文件夹清理程序分享
Nov 22 #Python
Python判断操作系统类型代码分享
Nov 22 #Python
python logging类库使用例子
Nov 22 #Python
You might like
一些常用的php函数
2006/12/06 PHP
php常用的url处理函数总结
2014/11/19 PHP
php显示时间常用方法小结
2015/06/05 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
JsChart组件使用详解
2018/03/04 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
python数据结构之二叉树的遍历实例
2014/04/29 Python
python字符串替换的2种方法
2014/11/30 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
教育学专业实习生的自我鉴定
2013/11/26 职场文书
实习自我评价怎么写
2013/12/02 职场文书
高校自主招生自荐信
2013/12/09 职场文书
岗位廉政承诺书
2014/03/27 职场文书
学期评语大全
2014/04/30 职场文书
社区维稳工作方案
2014/06/06 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
2014年班干部工作总结
2014/11/25 职场文书
2014年优秀党员材料
2014/12/18 职场文书
付款证明模板
2015/06/19 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
找规律教学反思
2016/02/23 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript