用途:为 Frappe/ERPNext v14、v15、v16 配置定时事件与后台任务(基于 Redis Queue/RQ)提供确定性语法参考。
主要能力:hooks.py 中 scheduler_events 的标准事件(all、hourly、daily、weekly、monthly 及对应 _long 队列事件)与 cron 自定义表达式;frappe.enqueue() 异步任务(含 queue、timeout、is_async、now、job_id、enqueue_after_commit、at_front、on_success、on_failure 等参数);frappe.enqueue_doc() 针对指定单据执行控制器方法(方法须 @frappe.whitelist() 装饰);self.queue_action() 在控制器内排队;v15+ 通过 job_id 与 is_job_enqueued() 去重;批处理中按记录 commit/rollback 并记录错误;重试模式与进度实时推送。
必要用法:修改 scheduler_events 后必须运行 bench migrate,否则变更不生效;队列按任务时长选择 short/default/long,必要时自定义 timeout;定时任务以 Administrator 身份运行,创建单据需显式设置 owner。
适用场景:定时同步与清理、报表与汇总生成、重数据导出、定期账单等周期性或事件触发的后台处理。
限制与注意:不得在调度事件中直接运行重逻辑,应改用 enqueue;新代码不要使用 v14 旧式 job_name 去重;v14 与 v15+ 的 tick 间隔及配置键不同(scheduler_interval 对比 scheduler_tick_interval)。文档提到多个参考文件与相关技能,本页未提供其具体内容。