Python:利用XML-RPC实现简单的远端过程调用

简介: Python:利用XML-RPC实现简单的远端过程调用

Python:利用XML-RPC实现简单的远端过程调用
问题

我们希望能有一种简单的方法可以在远端机器上运行的Python程序中执行函数或者方法。

解决方案

也许实现一个远端过程调用机制最简单的方式是使用XML-RPC了。下面这个例子给出了一个简单的服务器,其中实现了键—值对的的存储:

from xmlrpc.server import SimpleXMLRPCServer


class KeyValueServer:
    _rpc_methods_ = ['get', 'set', 'delete', 'exists', 'keys']

    def __init__(self, address):
        self._data = {
   }
        self._serv = SimpleXMLRPCServer(address, allow_none=True)
        for name in self._rpc_methods_:
            self._serv.register_function(getattr(self, name))

    def get(self, name):
        return self._data[name]

    def set(self, name, value):
        self._data[name] = value

    def delete(self, name):
        del self._data[name]

    def exists(self, name):
        return name in self._data

    def keys(self):
        return list(self._data)

    def serve_forever(self):
        return self._serv.serve_forever()


if __name__ == '__main__':
    kvserv = KeyValueServer(('', 15000))

    kvserv.serve_forever()

启动服务器端

D:\Python39\python.exe D:/My_Project/Socket网络编程/remote_server.py
127.0.0.1 - - [17/May/2023 08:40:09] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [17/May/2023 08:40:11] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [17/May/2023 08:40:13] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [17/May/2023 08:40:15] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [17/May/2023 08:40:17] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [17/May/2023 08:40:19] "POST /RPC2 HTTP/1.1" 200 -

下面代码展示了如何从客户端远程访问服务器:

from xmlrpc.client import ServerProxy

s = ServerProxy('http://localhost:15000', allow_none=True)
s.set('foo', 'bar')
s.set('spam', [1, 2, 3])
print(s.keys())
print(s.get('spam'))
s.delete('spam')
print(s.keys())

运行结果如下:

D:\Python39\python.exe D:/My_Project/Socket网络编程/client_client.py
['foo', 'spam']
[1, 2, 3]
['foo']

Process finished with exit code 0
相关文章
|
7月前
|
XML 存储 Java
Python-docx编号列表解析:从XML迷宫到结构化数据的破局之道
本文深入解析了Word文档中自动编号的存储机制及解析难题,探讨了其在技术处理中的障碍,并通过三种实战方案对比,帮助开发者高效提取结构化数据。内容涵盖底层XML结构、常见问题解决方案及性能优化技巧,适用于合同条款、文档自动化处理等场景。
516 0
|
7月前
|
XML 存储 缓存
Python-docx编号列表解析:从XML迷宫到结构化数据的破局之道
Word文档中的自动编号功能虽便捷,却在技术处理时常成为障碍。本文深入解析Word文档的XML结构,揭示编号信息的存储机制,并提供多种基于Python的解决方案,涵盖跨平台解析、性能优化及固定模板处理,助力开发者突破编号解析难题,实现合同条款等内容的结构化提取与处理。
329 0
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
422 1
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
287 1
|
XML 数据格式 Python
python 解析xml遇到xml.etree.ElementTree.ParseError: not well-formed (invalid token): |4-8
python 解析xml遇到xml.etree.ElementTree.ParseError: not well-formed (invalid token): |4-8
|
XML JavaScript API
30天拿下Python之使用xml
30天拿下Python之使用xml
104 0
|
XML JavaScript 关系型数据库
Python XML 解析
Python XML 解析
|
XML 数据格式 Python
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
|
XML 数据格式 Python
【Python】已解决:xml.parsers.expat.ExpatError: no element found: Line 1, column 0
【Python】已解决:xml.parsers.expat.ExpatError: no element found: Line 1, column 0
661 0
|
XML JavaScript 数据格式
【Python】已解决:(Python xml库 import xml.dom.minidom导包报错)‘No module named dom’
【Python】已解决:(Python xml库 import xml.dom.minidom导包报错)‘No module named dom’
380 0

推荐镜像

更多