使用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查找第k小元素代码分享
Dec 18 Python
跟老齐学Python之有容乃大的list(1)
Sep 14 Python
零基础写python爬虫之打包生成exe文件
Nov 06 Python
opencv python 2D直方图的示例代码
Jul 20 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
python3利用Socket实现通信的方法示例
May 06 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 Python
python集合删除多种方法详解
Feb 10 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 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
php学习之简单计算器实现代码
2011/06/09 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
Js四则运算函数代码
2012/07/21 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
JS中关于正则的巧妙操作
2017/08/31 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
python通过smpt发送邮件的方法
2015/04/30 Python
Django rest framework实现分页的示例
2018/05/24 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
Python2与Python3的区别点整理
2019/12/12 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
好的自荐信的要求
2013/10/30 职场文书
仓库文员岗位职责
2014/04/06 职场文书
护理培训心得体会
2016/01/22 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python