使用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正则表达式re模块详解
Jun 25 Python
Python随机生成数模块random使用实例
Apr 13 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
python 输出所有大小写字母的方法
Jan 02 Python
python实现代码统计器
Sep 19 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
如何更换python默认编辑器的背景色
Aug 10 Python
python使用re模块爬取豆瓣Top250电影
Oct 20 Python
python3实现简单飞机大战
Nov 29 Python
总结Python常用的魔法方法
May 25 Python
使用python绘制分组对比柱状图
Apr 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
一个查看session内容的函数
2006/10/09 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
jQuery的链式调用浅析
2010/12/03 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
Python内置模块logging用法实例分析
2018/02/12 Python
python使用tornado实现登录和登出
2018/07/28 Python
Python logging模块用法示例
2018/08/28 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python多线程thread及模块使用实例
2020/04/28 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
python3.5的包存放的具体路径
2020/08/16 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
《火烧云》教学反思
2014/04/12 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
置业顾问岗位职责
2015/02/09 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技