🚀 金山文档 AirScript 脚本队列系统 - 告别并发冲突,让脚本执行更稳定
创作者俱乐部成员
📌 前言
大家好!今天给大家分享一个我开发的金山文档 AirScript 脚本任务队列管理系统。相信很多使用金山文档脚本的朋友都遇到过类似的问题,这个工具就是为了解决这些痛点而生的。
😫 之前的痛点
1. 并发冲突导致数据错乱
当多个 Webhook 同时触发同一个脚本时,脚本会并发执行,导致:
数据写入冲突,记录被覆盖或丢失
同一条记录被重复处理
脚本执行结果不可预期
2. 脚本执行失败无感知
脚本执行失败后没有任何通知
不知道哪些任务失败了,需要手动排查
失败后需要手动重新触发,费时费力
3. 无法追踪执行历史
不知道脚本什么时候执行的
无法查看历史执行记录和结果
出问题时难以定位原因
4. 高并发场景下的限制
金山文档对单文件的并发请求有限制
大量请求同时涌入时容易触发限流
没有有效的流量控制手段
5. 手动管理多个 Webhook 繁琐
需要手动维护多个文件的 Webhook
无法自动分配请求到空闲的 Webhook
扩容需要手动复制文件、配置脚本
✨ 现在的优点
1. 🎯 智能排队,告别冲突
相同脚本排队执行:同一个脚本的任务自动排队,确保顺序执行
不同脚本并行执行:不同脚本之间互不影响,充分利用并发能力
防抖任务支持:相同脚本只执行最新一个,避免重复处理
2. 🔄 自动重试,稳定可靠
任务失败自动重试,支持配置重试次数和延迟
重试间隔可配置(默认 10 分钟),避免频繁请求
最大重试次数可配置(默认 3 次)
3. 📊 可视化仪表盘,一目了然
实时监控任务状态(等待中/执行中/已完成/失败)
执行趋势图表,了解任务分布
目标分布统计,掌握各脚本执行情况
4. 🔔 企业微信通知,及时告警
任务失败时自动推送通知
重试时也会通知,让你随时掌握状态
支持自定义 Webhook URL
5. 💾 持久化存储,历史可查
SQLite 本地存储,数据不丢失
支持查询历史任务记录
可配置任务保留天数
6. 🔗 Webhook 池管理,自动扩容
多 Webhook 并发调度,突破单文件限制
智能选择空闲的 Webhook 执行任务
一键克隆:自动复制文件创建新 Webhook
同文件串行、不同文件并行
7. 🌐 标准 RESTful API
完整的 CRUD 接口,支持 Sheet/View/Field/Record 操作
支持通过名称代替 ID,更加友好
批量操作支持,提高效率
8. ⚙️ 灵活配置,开箱即用
Web 界面配置系统参数
环境变量支持,方便部署
PM2 一键部署,稳定运行
🛠️ 核心功能一览
功能说明
智能排队相同脚本排队,不同脚本并行
自动重试失败自动重试,可配置次数和延迟
可视化监控实时仪表盘,任务状态一目了然
企业微信通知失败/重试自动推送
Webhook 池多 Webhook 并发,自动扩容
标准 APIRESTful 接口,支持名称查询
持久化存储SQLite 存储,历史可查
Cookie 管理支持设置 Cookie 开启脚本权限
📸 界面预览
系统提供了多个管理页面:
仪表盘:实时监控任务状态和执行趋势
设置页面:配置系统参数
Webhook 池管理:管理多个 Webhook,支持一键扩容
💡 使用场景
表单提交处理:多人同时提交表单时,确保数据按顺序处理
定时任务调度:配合定时触发,稳定执行批量任务
数据同步:多源数据同步时,避免并发冲突
自动化工作流:构建稳定的自动化处理流程
🤝 写在最后
这个项目是我在实际使用金山文档脚本过程中,为了解决各种痛点而开发的。希望能帮助到有同样需求的朋友!
如果你觉得有用,欢迎 Star ⭐ 支持一下!有问题或建议也欢迎在评论区交流~
@金山办公