用途:为 Frappe/ERPNext v14/v15/v16 提供调度器事件与后台任务处理的确定性语法参考,帮助正确配置定时任务与异步作业。
主要能力:覆盖 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 及 **kwargs);队列类型 short/default/long 及其超时;v15 基于 job_id 与 is_job_enqueued() 的任务去重;成功/失败回调;逐条提交与回滚的错误处理模式;以及 RQ Worker、RQ Job、bench doctor、Scheduled Job Log 等监控手段。
必要用法:修改 scheduler_events 后必须执行 bench migrate;重任务应通过调度事件 enqueue 而非直接执行;按任务时长选择队列;每条记录成功后 frappe.db.commit(),出错时 frappe.db.rollback() 并 frappe.log_error()。
限制与注意:调度任务以 Administrator 身份运行,需显式设置 owner 或使用 ignore_permissions;v14 与 v15 在 tick 间隔(约 4 分钟 vs 60 秒)、配置键(scheduler_interval vs scheduler_tick_interval)和去重方式(job_name vs job_id)上存在差异;v14 的 get_info() 去重方式已废弃,仅用于遗留代码。
适用场景:需要在 ERPNext 应用中编写定时任务、异步后台作业、批量导入或重处理逻辑的开发者。