使用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 相关文章推荐
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
解决pycharm的Python console不能调试当前程序的问题
Jan 20 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
Python动态声明变量赋值代码实例
Dec 30 Python
Python用input输入列表的实例代码
Feb 07 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
Python实现自动整理文件的脚本
Dec 17 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教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
php利用header函数下载各种文件
2016/08/24 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
浅谈js闭包理解
2019/03/28 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Python实现仿射密码的思路详解
2020/04/23 Python
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
Java基础知识面试题
2014/03/25 面试题
企事业单位求职者的自我评价
2013/12/28 职场文书
给市场的环保建议书
2014/05/14 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
抗洪救灾标语
2014/10/08 职场文书
高三复习计划
2015/01/19 职场文书
项目建议书
2015/02/04 职场文书
教师思想工作总结2015
2015/05/13 职场文书
刮痧观后感
2015/06/05 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP