新闻中心
怎么用Python的xmlrpc实现客户端和服务器
Python的xmlrpc模块提供基于HTTP+XML的轻量跨语言RPC,服务器用SimpleXMLRPCServer注册实例并serve_forever,客户端用ServerProxy调用;支持int/float/str/bool/datetime/bytes/list/dict(key须为str),不支持set/tuple/自定义类,大文件传输不适用。

Python 的 xmlrpc 模块(标准库中的 xmlrpc.server 和 xmlrpc.client)提供了一种轻量、跨语言的远程过程调用方式,适合简单服务场景。它基于 HTTP + XML,无需额外依赖,开箱即用。
服务器端:用 SimpleXMLRPCServer(Python 3.12+ 已改名)
在 Python 3.12 之前,常用 SimpleXMLRPCServer;3.12 起已移入 xmlrpc.server,类名改为 SimpleXMLRPCServer(路径不变,只是模块位置调整)。以下写法兼容 3.9–3.12:
- 定义一个普通函数(如
add(a, b)),它将作为可被远程调用的方法 - 创建服务器实例,绑定到本地地址和端口(如
localhost:8000) - 用
register_function()注册函数,或用register_instance()注册整个对象(推荐后者,便于组织多个方法) - 调用
serve_forever()启动阻塞式服务
示例(server.py):
from xmlrpc.server import SimpleXMLRPCServer
import time
<p>class Calculator:
def add(self, a, b):
return a + b
def now(self):
return time.ctime()</p><p>server = SimpleXMLRPCServer(("localhost", 8000))
server.register_instance(Calculator())
print("XML-RPC server running on <a href="https://www.php.cn/link/d62bd5e1be9a157e45aed37bd98743c2">https://www.php.cn/link/d62bd5e1be9a157e45aed37bd98743c2</a>")
server.serve_forever()
客户端:用 ServerProxy 调用远程方法
客户端只需用 xmlrpc.client.ServerProxy 连接服务器 URL,之后像调用本地对象一样使用点号语法访问方法。
- URL 格式为
http://host:port/(末尾斜杠不能少) - 调用会自动序列化参数、发送 HTTP POST 请求、解析 XML 响应
- 若服务器不可达、方法不存在或参数类型不匹配,会抛出
Fault、ProtocolError或ConnectionError
示例(client.py):
极限网络办公Office Automation
专为中小型企业定制的网络办公软件,富有竞争力的十大特性: 1、独创 web服务器、数据库和应用程序全部自动傻瓜安装,建立企业信息中枢 只需3分钟。 2、客户机无需安装专用软件,使用浏览器即可实现全球办公。 3、集成Internet邮件管理组件,提供web方式的远程邮件服务。 4、集成语音会议组件,节省长途话费开支。 5、集成手机短信组件,重要信息可直接发送到员工手机。 6、集成网络硬
0
查看详情
import xmlrpc.client
<p>proxy = xmlrpc.client.ServerProxy("<a href="https://www.php.cn/link/d62bd5e1be9a157e45aed37bd98743c2">https://www.php.cn/link/d62bd5e1be9a157e45aed37bd98743c2</a>")</p><p>print(proxy.add(3, 5)) # 输出: 8
print(proxy.now()) # 输出: Wed Apr 10 15:22:33 2025
支持的数据类型与注意事项
XML-RPC 只支持有限的原生类型:int、float、string、boolean、datetime、bytes(Python 3 中对应 bytes)、list、dict(键必须是 string)。不支持 set、tuple(会被转成 list)、自定义类、None(但可传 None,服务器端收到的是 None,客户端也能接收)。
- 字典的 key 必须是字符串,否则序列化失败
- datetime 对象会被自动转成
DateTime类型,在客户端收到的是xmlrpc.client.DateTime实例,可用.value获取 ISO 字符串,或转成datetime:datetime.strptime(dt.value, "%Y%m%dT%H:%M:%S") - 大文件传输不适合 XML-RPC(XML 开销大、无流式支持),建议改用 HTTP 文件上传或 gRPC
加个简单认证(可选)
XML-RPC 协议本身不带认证,但可通过 HTTP Basic Auth 包装:
- 服务器端需配合 WSGI 或用
http.server自定义 handler 实现 auth(标准SimpleXMLRPCServer不支持) - 更简单的方式:客户端在 URL 中嵌入凭证,如
"http://user:pass@localhost:8000/"(仅限测试,不安全) - 生产环境建议加反向代理(如 Nginx)做 Basic Auth 或 JWT 验证
基本上就这些。不复杂但容易忽略细节——比如 URL 斜杠、字典 key 类型、datetime 处理。跑通 hello world 后,扩展业务逻辑只需往注册对象里加方法即可。
以上就是怎么用Python的xmlrpc实现客户端和服务器的详细内容,更多请关注其它相关文章!
# 转换为
# 15个seo技巧
# 谷歌白帽seo
# 河北典当网站建设
# 网站优化排名方案
# 青海网站建设模块化
# seo要收费吗
# 重庆seo推广开发
# 无蜘蛛不seo
# 海外推广网站方法有哪些
# 地产营销推广进阶方案
# 如何用
# 里加
# python
# 只需
# 遍历
# 转成
# 的是
# 不支持
# 自定义
# 客户端
# asic
# 标准库
# proxy
# 端口
# nginx
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
如何将HTML表格多行数据保存到Google Sheet
UC浏览器网页版登录入口官网 电脑版网址入口
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持
QQ邮箱稳定登录入口_QQ邮箱官方网站网页版使用
Python中高效且防溢出的双曲正弦计算:基于对数空间的优化策略
AO3网页版最新入口合集 Archive of Our Own在线访问指南
Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略
神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
Archive of Our Own官网直达 AO3最新可用地址一览
J*aScript Promise链中如何正确终止后续.then执行并处理错误
写好的html代码怎么运行出来_运行写好的html代码方法【教程】
将HTML Canvas内容转换为可上传的图像文件(File对象)
poki网页游戏推荐_poki免费游戏平台入口
C#中解析不规范的HTML为XML 常见的坑与解决办法
解决Python单元测试中Mock异常方法调用计数为零的问题
特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相
夸克浏览器图书入口 夸克手机浏览器阅读入口
AO3最新镜像入口 Archive of Our Own官方平台访问
126邮箱网页版官方入口 126邮箱账号在线登录平台
基于动态规划的房屋花卉种植最小成本算法详解
印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】
qq邮箱日历功能怎么用_创建日程与会议邀请的技巧
知音漫客正版漫画平台_知音漫客官网账号登录
mysql如何设置表访问权限_mysql表访问权限配置
sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验
windows10怎么关闭系统提示音_windows10彻底静音设置方法
12306怎么选座位选到安静区_12306选座安静区域选择策略
steam官方网页快速访问 steam账号注册全流程
ArrayList与LinkedList操作复杂度详解:遍历与修改
C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法
马斯克:Optimus 人形机器人复数形式为 Optimi
如何使用CaptainHook和Composer管理Git钩子_在提交前自动运行代码检查的Composer配置
深入理解rpy2中的类型转换:优化Python对象到R矩阵的映射
PDF文件体积过大处理_PDF压缩技巧详解
三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】
Composer如何解决json扩展缺失的错误
漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接
Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧
如何仅使用CSS更改登录界面背景图像图标的颜色
如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】
HTML空白字符处理机制:渲染、DOM与编码实践
在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略
在VS Code中配置和运行Dart程序的完整步骤
黑猫投诉统一入口官网 消费者权益保护投诉平台


2025-12-15
浏览次数:次
返回列表