使用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进行稳定可靠的文件操作详解
Dec 31 Python
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
浅谈django model postgres的json字段编码问题
Jan 05 Python
pyhton列表转换为数组的实例
Apr 04 Python
Python 打印中文字符的三种方法
Aug 14 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
Python pip替换为阿里源的方法步骤
Jul 02 Python
Python秒算24点实现及原理详解
Jul 29 Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
用python删除文件夹中的重复图片(图片去重)
May 12 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
PHP类的使用 实例代码讲解
2009/12/28 PHP
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
JS 毫秒转时间示例代码
2013/09/22 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
Python 字符串操作方法大全
2014/03/11 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
Python Requests库基本用法示例
2018/08/20 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python print出共轭复数的方法详解
2019/06/25 Python
详解python中的模块及包导入
2019/08/30 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
用 Python 制作地球仪的方法
2020/04/24 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
工艺工程师工作职责
2013/11/23 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang