使用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创建声明性迷你语言的教程
Apr 13 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
PyQt5实现简易计算器
May 30 Python
Python变量访问权限控制详解
Jun 29 Python
解决Python使用列表副本的问题
Dec 19 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
python爬虫爬取网页数据并解析数据
Sep 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 header下载函数
2014/01/31 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
python代码编写计算器小程序
2020/03/30 Python
Python reversed函数及使用方法解析
2020/03/17 Python
大数据分析用java还是Python
2020/07/06 Python
医院标语大全
2014/06/23 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
战马观后感
2015/06/08 职场文书
早恋主题班会
2015/08/14 职场文书
python实现图片批量压缩
2021/04/24 Python
python中pycryto实现数据加密
2022/04/29 Python