Python 中的 XMLRPC 服务器和客户端模块


我们可以使用 XML-RPC 协议创建自己的跨平台、与语言无关的服务器。我们使用 SimpleXMLRPCServer 创建 SimpleXMLRPCServer 实例,并告诉它监听传入的请求。接下来我们将定义一些函数作为这个服务的一部分,并注册这些函数,以便服务器知道如何调用它们。

运行服务器

在下例中,我们使用 SimpleXMLRPCServer 实例创建了一个服务器,并注册了一些预定义的以及自定义的函数。最后,我们将服务器放入一个无限循环,接收请求并做出响应。

示例

from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
class RequestHandler(SimpleXMLRPCRequestHandler):
   rpc_paths = ('/RPC2',)
with SimpleXMLRPCServer(('localhost', 9000),
                        requestHandler=RequestHandler) as server:
   server.register_introspection_functions()
   # Register len() function;
   server.register_function(len)
   # Register a function under a different name
   @server.register_function(name='rmndr')
   def remainder_function(x, y):
      return x // y
   # Register a function under function.__name__.
   @server.register_function
   def modl(x, y):
      return x % y
   server.serve_forever()

一旦上述服务器运行,就可以由客户端程序调用它,客户端程序可以引用这些函数并调用函数。

运行客户端

示例

import xmlrpc.client
s = xmlrpc.client.ServerProxy('http://localhost:9000')
print(s.len("Tutorialspoint"))
print(s.rmndr(12,5))
print(s.modl(7,3))
# Print list of available methods
print(s.system.listMethods())

输出

运行上述代码后会产生以下结果 -

14
2
1
['len', 'modl', 'rmndr', 'system.listMethods', 'system.methodHelp', 'system.methodSignature']

更新于:2021 年 1 月 25 日

超过 3K 的浏览量

开启你的 职业生涯

完成课程并获得认证

开始学习
广告