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实现LRU算法的2种方法
Jun 24 Python
Python入门教程之运算符与控制流
Aug 17 Python
Python设计模式之中介模式简单示例
Jan 09 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
python调用自定义函数的实例操作
Jun 26 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
python第三方库学习笔记
Feb 07 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
Python paramiko使用方法代码汇总
Nov 20 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 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(二)
2012/03/21 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
koa socket即时通讯的示例代码
2018/09/07 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
python strip()函数 介绍
2013/05/24 Python
Python入门篇之函数
2014/10/20 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
django迁移文件migrations的实现
2020/03/31 Python
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
个性与发展自我评价
2014/02/11 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
推普周活动总结
2014/08/28 职场文书
委托书怎样写
2014/08/30 职场文书
客房部经理岗位职责
2015/02/02 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript