使用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实现将文本转换成语音的方法
May 28 Python
利用python模拟实现POST请求提交图片的方法
Jul 25 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
python每天定时运行某程序代码
Aug 16 Python
python hashlib加密实现代码
Oct 17 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
Keras设置以及获取权重的实现
Jun 19 Python
详解scrapy内置中间件的顺序
Sep 28 Python
Python更改pip镜像源的方法示例
Dec 01 Python
python 爬取百度文库并下载(免费文章限定)
Dec 04 Python
pytorch--之halfTensor的使用详解
May 24 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
自己的js工具_Form 封装
2009/08/21 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
mac上node.js环境的安装测试
2017/07/03 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
js读取本地文件的实例
2017/12/22 Javascript
React从react-router路由上做登陆验证控制的方法
2018/05/10 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
彪马日本官网:PUMA日本
2019/01/31 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
Solaris操作系统的线程机制
2012/12/23 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
2014全国两会学习心得体会2000字
2014/03/10 职场文书
校庆筹备方案
2014/03/30 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python