使用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输出当前目录下index.html文件路径的方法
Apr 28 Python
利用ctypes提高Python的执行速度
Sep 09 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
Sanic框架蓝图用法实例分析
Jul 17 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
python 爬取疫情数据的源码
Feb 09 Python
python内打印变量之%和f的实例
Feb 19 Python
Python爬虫与反爬虫大战
Jul 30 Python
python脚本定时发送邮件
Dec 22 Python
python基于tkinter制作无损音乐下载工具
Mar 29 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代码把全角数字转为半角数字
2007/12/10 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
PHP7修改的函数
2021/03/09 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
Python的UTC时间转换讲解
2019/02/26 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
python将音频进行变速的操作方法
2020/04/08 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
英文简历中的自我评价
2013/10/06 职场文书
打架检讨书50字
2014/01/11 职场文书
物流专员岗位职责
2014/02/17 职场文书
公司办公室岗位职责
2014/03/19 职场文书
品牌转让协议书
2014/08/20 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python