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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
python发腾讯微博代码分享
Jan 10 Python
儿童python练习实例
May 27 Python
Python中的枚举类型示例介绍
Jan 09 Python
深入浅析python 协程与go协程的区别
May 09 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
Python @property装饰器原理解析
Jan 22 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 14 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
laravel安装和配置教程
2014/10/29 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
Python实现端口检测的方法
2018/07/24 Python
python3 爬取图片的实例代码
2018/11/06 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
中职生自荐信
2013/10/13 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
授权收款委托书
2014/09/23 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
开学第一周总结
2015/07/16 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL