使用XML库的方式,实现RPC通信的方法(推荐)

 更新时间:2017年06月14日 07:49:15   投稿:jingxian  
下面小编就为大家带来一篇使用XML库的方式,实现RPC通信的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

1、先说结论:使用xml-rpc的机制可以很方便的实现服务器间的RPC调用。

2、试验结果如下:

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和anaconda区别以及先后安装的问题详解

    python和anaconda区别以及先后安装的问题详解

    Anaconda(开源的Python包管理器)是一个python发行版,包含了conda、Python等180多个科学包及其依赖项,下面这篇文章主要给大家介绍了关于python和anaconda区别以及先后安装问题的相关资料,需要的朋友可以参考下
    2022-05-05
  • 6个Python办公黑科技,助你提升工作效率

    6个Python办公黑科技,助你提升工作效率

    这篇文章主要介绍了Python办公黑科技,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-08-08
  • 如何使用Python实现PPT批量转图片

    如何使用Python实现PPT批量转图片

    这篇文章主要为大家详细介绍了如何使用Python开发一个带有图形界面的PPT批量转图片工具,文中的示例代码讲解详细,有需要的小伙伴可以了解下
    2025-02-02
  • python中使用xlrd、xlwt操作excel表格详解

    python中使用xlrd、xlwt操作excel表格详解

    这篇文章主要介绍了python中使用xlrd、xlwt操作excel表格详解,python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库,需要的朋友可以参考下
    2015-01-01
  • python 字符串常用函数详解

    python 字符串常用函数详解

    这篇文章主要介绍了python 字符串常用函数,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Python中的numpy数组维度扩展详解

    Python中的numpy数组维度扩展详解

    这篇文章主要介绍了Python中的numpy数组维度扩展详解,在numpy数组中,切片功能非常常用,例如x[:]表示取x的所有元素,可以通过在切片中增加None或者np.newaxis实现,它们的作用就是在相应的位置上增加一个维度,在这个维度上只有一个元素,需要的朋友可以参考下
    2023-09-09
  • Python中使用插入排序算法的简单分析与代码示例

    Python中使用插入排序算法的简单分析与代码示例

    这篇文章主要介绍了Python使用插入排序算法的简单分析与代码示例,插入算法的平均时间复杂度为O(n^2),需要的朋友可以参考下
    2016-05-05
  • Django+Nginx+uWSGI 定时任务的实现方法

    Django+Nginx+uWSGI 定时任务的实现方法

    本文主要介绍了Django+Nginx+uWSGI 定时任务的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Python强大的自省机制详解

    Python强大的自省机制详解

    这篇文章主要为大家介绍了Python强大的自省机制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Python MySQL 日期时间格式化作为参数的操作

    Python MySQL 日期时间格式化作为参数的操作

    这篇文章主要介绍了Python MySQL 日期时间格式化作为参数的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03

最新评论