✨ m2w v2.7.0 - Rate Limiting & Resumable Uploads
🎉 m2w v2.7.0 - 批量上传的安全解决方案
为解决批量上传大量文章(1000+ 篇)时可能触发的服务器限流问题,本版本引入了速率限制、批次处理和断点续传三大核心功能,让批量上传更加安全可靠!
🚀 核心亮点
- 🛡️ 速率限制保护 — 可配置的请求间延迟,有效避免 HTTP 429 错误和 IP 封禁
- 📦 批次处理机制 — 将大量文章分批处理,批次间自动暂停,降低服务器压力
- ⏮️ 断点续传支持 — 进度实时保存,中断后可从断点继续,无需重新开始
- 🔄 智能重试机制 — 遇到 HTTP 429 错误时自动指数退避重试
✨ 主要更新
速率限制器 (RateLimiter)
新增 m2w/rest_api/rate_limiter.py 模块,提供以下功能:
- 请求间延迟:每个请求之间可配置延迟时间(默认 1.0 秒)
- 批次处理:按批次大小处理文件(默认每批 10 篇)
- 批次间延迟:批次之间可配置更长延迟(默认 5.0 秒)
- HTTP 429 处理:检测到速率限制时自动指数退避重试
进度管理器 (ProgressManager)
新增 m2w/rest_api/progress_manager.py 模块,支持断点续传:
- 进度保存:实时保存上传进度到
.m2w_progress.json - 断点恢复:中断后重新运行可从上次断点继续
- 失败记录:记录失败文件及错误信息,方便排查
- 自动清理:全部完成后自动清除进度文件
新增配置参数
在 myblog.py 中可配置以下参数:
# 速率限制配置
rate_limit_enabled = True # 启用速率限制
request_delay = 1.0 # 请求间延迟(秒)
batch_size = 10 # 每批处理的文章数
batch_delay = 5.0 # 批次间延迟(秒)
max_429_retries = 5 # 429 最大重试次数
initial_backoff = 2.0 # 指数退避初始时间(秒)
# 进度保存配置
progress_enabled = True # 启用断点续传
progress_file = None # None 表示与 legacy.json 同目录🔧 技术改进
- 重构
upload_article()方法,支持分批处理逻辑 - 新增
_upload_with_retry()方法,处理 HTTP 429 错误重试 - 修复 Path 类型与字符串拼接的兼容性问题
- 更新 README 文档,添加 v2.7.0 功能说明
📋 推荐配置
保守配置(严格限制的服务器):
request_delay = 2.0
batch_size = 5
batch_delay = 10.0平衡配置(推荐):
request_delay = 1.0
batch_size = 10
batch_delay = 5.0激进配置(宽松限制的服务器):
request_delay = 0.5
batch_size = 20
batch_delay = 3.0📦 安装
pip install -i https://pypi.org/simple m2w==2.7.0或从源码构建:
python -m build
pip install dist/m2w-2.7.0*.whl📝 完整变更日志
- ✨ feat(up): add rate limiting and resumable uploads for bulk operations
- 📄 更新 README 文档,添加 v2.7.0 新功能说明
- 🔧 修复 pyproject.toml 版本号
适用场景:批量上传 1000+ 篇文章、服务器限流严格、需要可中断恢复的上传任务
🙏 感谢使用 m2w!