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实现的二维码生成小软件
Jul 11 Python
python实现颜色空间转换程序(Tkinter)
Dec 31 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
Django自定义模板过滤器和标签的实现方法
Aug 21 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
Django 实现对已存在的model进行更改
Mar 28 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
python 中yaml文件用法大全
Jul 04 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笔记 字符串处理
2010/10/19 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
php邮件发送的两种方式
2020/04/28 PHP
php生成curl命令行的方法
2015/12/14 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python找出list中最常出现元素的方法
2016/06/14 Python
使用Python更换外网IP的方法
2018/07/09 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
kali中python版本的切换方法
2019/07/11 Python
django如何自己创建一个中间件
2019/07/24 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
python实现文法左递归的消除方法
2020/05/22 Python
Python如何安装第三方模块
2020/05/28 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
最新会计专业求职信范文
2014/01/28 职场文书
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python