使用XML库的方式,实现RPC通信的方法(推荐)


Posted in Python onJune 14, 2017

1、先说结论:使用xml-rpc的机制可以很方便的实现服务器间的RPC调用。

2、试验结果如下:

使用XML库的方式,实现RPC通信的方法(推荐)

3、源码如下:

服务器端的源代码如下:

import operator, math
from SimpleXMLRPCServer import SimpleXMLRPCServer
from functools import reduce

def main():
  server = SimpleXMLRPCServer(('127.0.0.1', 7001))
  server.register_introspection_functions()
  server.register_multicall_functions()
  server.register_function(addtogether)
  server.register_function(quadratic)
  server.register_function(remote_repr)
  
  print("Server ready")
  server.serve_forever()
  
def addtogether(*things):
  """Add together everything in the list things ."""
  return reduce(operator.add, things)
  
def quadratic(a, b, c):
  """Determine x values satisfying: a * x * x + b * x + c = 0"""
  b24ac = math.sqrt(b*b - 4.0*a*c)
  return list(set([(-b-b24ac) / 2.0*a, (-b+b24ac) / 2.0*a]))
  
def remote_repr(arg):
  """return the repr() rendering of the supplied arg """
  return arg
  
if __name__ == '__main__':
  main()

客户端的代码如下:

import xmlrpclib

def main():
  proxy = xmlrpclib.ServerProxy('http://127.0.0.1:7001')
  
  print("Here are the functions supported by this server:")
  
  print("next calculator addtogether: ")
  print(proxy.addtogether('x','y','z'))
  print(proxy.addtogether('x','y','z'))
  
  print(proxy.addtogether('x','y','z'))
  print(proxy.addtogether('x','y','z'))
  for method_name in proxy.system.listMethods():
    if method_name.startswith('system.'):
      continue
      
    signatures = proxy.system.methodSignature(method_name)
    if isinstance(signatures, list) and signatures:
      for signature in signatures:
        print('%s(%s)' %(method_name, signature))
        
    else:
      print('%s(...)' %(method_name,))
      
    method_help = proxy.system.methodHelp(method_name)
    #if method_help:
    #  print(' ', methodHelp)
  
  print(proxy.addtogether('x','y','z'))
  print("addtogether result ")
      
if __name__ == '__main__':
  main()

以上这篇使用XML库的方式,实现RPC通信的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python正则表达式介绍
Aug 06 Python
从零学Python之入门(五)缩进和选择
May 27 Python
Python程序设计入门(5)类的使用简介
Jun 16 Python
python文件操作整理汇总
Oct 21 Python
简单介绍Python中的decode()方法的使用
May 18 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
django 链接多个数据库 并使用原生sql实现
Mar 28 Python
Python实现爬取并分析电商评论
Jun 19 Python
Python3.9.1中使用match方法详解
Feb 08 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 #Python
Python实现的下载网页源码功能示例
Jun 13 #Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 #Python
老生常谈python之鸭子类和多态
Jun 13 #Python
浅谈scrapy 的基本命令介绍
Jun 13 #Python
python生成词云的实现方法(推荐)
Jun 13 #Python
Python实现Linux中的du命令
Jun 12 #Python
You might like
生成缩略图
2006/10/09 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python批量查询域名是否被注册过
2017/06/21 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
Python 中的lambda函数介绍
2018/10/10 Python
python使用插值法画出平滑曲线
2018/12/15 Python
Python对象与引用的介绍
2019/01/24 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
用Python解数独的方法示例
2019/10/24 Python
Python求解正态分布置信区间教程
2019/11/20 Python
python使用配置文件过程详解
2019/12/28 Python
Python @property装饰器原理解析
2020/01/22 Python
C语言面试题
2015/10/30 面试题
金蝶的一道SQL笔试题
2012/12/18 面试题
期中考试反思800字
2014/05/01 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
500字作文之难忘的同学
2019/12/20 职场文书