使用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的几种标准输出重定向方式
Aug 15 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
简单了解OpenCV是个什么东西
Nov 10 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
在双python下设置python3为默认的方法
Oct 31 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
python中append函数用法讲解
Dec 11 Python
Scrapy实现模拟登录的示例代码
Feb 21 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
ThinkPHP安装和设置
2015/07/27 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
js获取变量
2006/08/24 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
js 表格隔行颜色
2009/12/02 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
Python获取央视节目单的实现代码
2015/07/25 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
Python日志syslog使用原理详解
2020/02/18 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
人力资源专业推荐信
2013/11/29 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
节能标语大全
2014/06/21 职场文书
2014年销售员工作总结
2014/12/01 职场文书
寒山寺导游词
2015/02/03 职场文书
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers