使用XML库的方式,实现RPC通信的方法(推荐)
作者:jingxian 发布时间:2021-11-15 14:00:42
标签: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()
0
投稿
猜你喜欢
- 这篇文章主要介绍了Python tkinter三种布局实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 如何指定GPU训练模型Linux 查看当前服务器 GPU 的占用情况可以使用 nvidia-smi 命令,如下所示:nvidia-smi关于
- 作用:主要记录信息,便于定位查看问题。python logging模块官网:https://docs.python.org/zh-cn/3.
- 一、用HTTP头信息 也就是用PHP的HEADER函数。PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WE
- 首先创建一个csv文件,创建方式为新建一个文本文档,然后将这个文本文档重命名为test.csv再用Excel打开,添加内容内容如下:先来添加
- 自己尝试在本地搭建了 Django 项目后,想部署到自己云服务器上,经常多次尝试和多次踩坑(捂脸),总结如下:环境:ubuntu14, dj
- 引言继上一篇 《Blender Python 编程:快速入门》 我们已经了解了 Blender Python 脚本的基本概念。接下来让我们了
- 如何制作一个分页程序?确实,翻页程序可以相互借鉴,但具体到每一需求,还是有较大差别的。代码入下,供参考:<%language=&quo
- 环境使用Python 3.8–> 解释器 <执行python代码>Pycharm–
- 整体思路将要备份的目录列为一个列表,通过执行系统命令,进行压缩、备份。这样关键在于构造命令并使用 os.system( )来执行,一开始使用
- MySQL是支持在单个查询字符串中指定多语句执行的,使用方法是给链接指定参数: //链接时设定 mysql_real_connect( ..
- 本文实例讲述了Python使用matplotlib实现的图像读取、切割裁剪功能。分享给大家供大家参考,具体如下:# -*- coding:u
- 前言:列表框控件显示多行文本,用户可以选中一行或者多行。所有的文本只能使用一种字体,不能混合使用多种字体。1 属性常用的参数列表如下:1.1
- 层的八条定律当然,这些并非真正的定律,而只是一些有益的忠告,使你免陷于使用层时可能的困顿中。原来有九条定律的,我们精简掉一条,还有下面的八条
- 第一种: php部分 <?php if($_FILES['file']['error']&
- 一. 通过 ConfigProto 设置多线程 (具体参数功能及描述见 tensorflow/core/protobuf/config.pr
- 废话不多说了,直接上代码吧!#!/usr/bin/env python# coding=utf-8# 画一棵樱花import turtlei
- map( )函数在算法题目里面经常出现,map( )会根据提供的函数对指定序列做映射,在写返回值等需要转换的时候比较常用。关于映射map,可
- 这个问题是微信群中网友关于MySQL权限的讨论,有这么一个业务需求(下面是他的原话):因为MySQL的很多功能都依赖主键,我想用zabbix
- 属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。为什么叫猴子补丁属性的运行时替换和猴子也没什么关系,关于猴子补丁的由来网上