第十二章:互联网-xmlrpc.server:一个XML-RPC服务器-加点的API名

本文介绍如何使用Python的xmlrpc.server模块创建一个XML-RPC服务器,并演示如何通过客户端调用带有命名空间的服务器函数。服务器提供目录操作服务,如列出、创建和删除目录。客户端能够成功调用这些服务并验证操作结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

12.11.3 加点的API名
还可以用通常情况下不能作为合法Python标识符的名字来注册各个函数。例如,可以在名字中包含一个点号(.)来分隔服务中的命名空间。下面的例子扩展了"目录"服务,增加了"创建"和"删除"调用。所有函数注册时都使用了前缀dir.,这样同一个服务器就可以通过使用不同的前缀来提供其他服务。这个例子中还有一点不同,有些函数会返回None,所有必须告诉服务器将None值转换为一个nil值。

from xmlrpc.server import SimpleXMLRPCServer
import os

server = SimpleXMLRPCServer(('localhost',9000),allow_none=True)

server.register_function(os.listdir,'dir.list')
server.register_function(os.mkdir,'dir.create')
server.register_function(os.rmdir,'dir.remove')

try:
    print('Use Control-C to exit')
    server.serve_forever()
except KeyboardInterrupt:
    print('Exiting')

要在客户中调用服务函数,只需要加点的名来指示函数。

import xmlrpc.client

proxy = xmlrpc.client.ServerProxy('http://localhost:9000')
print('BEFORE      :','EXAMPLE' in proxy.dir.list('/tmp'))
print('CREATE      :',proxy.dir.create('/tmp/EXAMPLE'))
print('SHOULD EXIST:','EXAMPLE' in proxy.dir.list('/tmp'))
print('REMOVE      :',proxy.dir.remove('/tmp/EXAMPLE'))
print('AFTER       :','EXAMPLE' in proxy.dir.list('/tmp'))

假设当前系统上没有/tmp/EXAMPLE文件,那么示例客户脚本会生成以下输出。
运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值