使用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读写Excel文件方法介绍
Nov 22 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
Python中文件的读取和写入操作
Apr 27 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
python识别图像并提取文字的实现方法
Jun 28 Python
简单了解django缓存方式及配置
Jul 19 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
Python对excel的基本操作方法
Feb 18 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 读取和修改大文件的某行内容的代码
2009/10/30 PHP
如何离线执行php任务
2017/02/21 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
Angular中的interceptors拦截器
2017/06/25 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
python查看zip包中文件及大小的方法
2015/07/09 Python
Django URL传递参数的方法总结
2016/08/28 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
python集合常见运算案例解析
2019/10/17 Python
python爬取代理ip的示例
2020/12/18 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
合作经营协议书
2014/04/17 职场文书
药剂专业自荐书
2014/06/20 职场文书
师范毕业生求职信
2014/07/11 职场文书
作风建设年活动总结
2014/08/27 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
2014年销售员工作总结
2014/12/01 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
学校运动会感想
2015/08/10 职场文书
行为规范主题班会
2015/08/13 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python