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
相关文章
|
2月前
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
20 1
|
8月前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
167 1
|
4月前
|
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
|
4月前
|
XML JavaScript API
30天拿下Python之使用xml
30天拿下Python之使用xml
32 0
|
7月前
|
XML JavaScript 关系型数据库
Python XML 解析
Python XML 解析
|
6月前
|
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
176 0
|
6月前
|
XML JavaScript 数据格式
【Python】已解决:(Python xml库 import xml.dom.minidom导包报错)‘No module named dom’
【Python】已解决:(Python xml库 import xml.dom.minidom导包报错)‘No module named dom’
128 0
|
6月前
|
XML 数据格式 Python
【Python】已解决:FileNotFoundError: [Errno 2] No such file or directory: ‘./1.xml’
【Python】已解决:FileNotFoundError: [Errno 2] No such file or directory: ‘./1.xml’
328 0
|
7月前
|
XML 存储 JavaScript
python读取xml文件详细讲解
python读取xml文件详细讲解
71 0
|
8月前
|
XML 数据格式 Python
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
下一篇
开通oss服务