定时任务
Cron Job
中级通用定时任务(Cron Job)是按预设时间规则自动触发的后台工作,例如每天凌晨汇总前一天的订单。它解决的是“没人点击按钮,也要在固定时间做事”的问题,让报表生成、定期清理等工作自动运行。
你可能会说:「我想让后台每天凌晨自动汇总昨天的订单,不用等管理员打开页面才开始算。」
动手看看订单日报的每日定时任务
先改每日触发时间,再依次切换三个时间快照,观察状态和日志。这是后台过程的快照模拟,不是真实计时;界面里不需要有人点击“执行”。
Cron 表达式从左到右是分、时、日、月、星期。这里固定在第 0 分钟,日、月、星期用星号,表示按北京时间每天执行。表达式本身不包含时区。
启用不等于马上运行。还没到约定时间,调度器继续等待,今天的执行日志和新日报都不会凭空出现。
要点定时任务怎样按时完成工作?
- 1
时间规则决定何时触发
你先约定运行时间,比如每天凌晨两点;调度器到点后再启动任务代码。时间规则只负责触发,不保证任务一定成功,所以我们还得关注运行结果。
- 2
任务代码负责实际处理
生成报表、清理过期文件的是任务代码,不是时间规则本身。把处理逻辑和触发方式分开,同一段逻辑就能在定时运行之外,也供管理员手动补跑。
- 3
重复执行和漏执行要有预案
如果上一次还没跑完,下一次又到点了,就可能同时处理同一批数据;服务停机也可能让某次任务错过。你可以和 AI 明确时区、重复执行的处理方式,以及失败后怎么发现和补跑。
容易混淆的地方
定时任务说的是“何时启动”:到预设时间才触发。后台任务说的是“在哪里执行”:把工作放到请求之外处理,两者可以组合。消息队列则通常是有消息进入后再交给消费者处理;如果你要在订单创建后立刻发邮件,事件触发比固定时间轮询更贴切。
什么时候用
适合用
- 做电商后台时,每天凌晨汇总前一天的订单,供运营早上查看报表。
- 做会员产品时,每天检查已到期的试用资格,并更新对应状态。
- 做 AI 工具时,每周定期清理超过保留期限的临时生成文件。
不适合用
- 用户点击“导出”后就要开始生成文件,这由点击触发,更适合交给后台任务处理。
- 新订单一创建就要通知商家,等下一次定时检查会拖慢通知,可用事件触发或消息队列。
- 只需要在部署时执行一次数据初始化,就把它放进部署流程或一次性脚本,而不是设成周期任务。
练一练选一个答案,看看解释
你做的运营后台需要每天早上展示前一天的订单汇总;计算可能花几分钟,也不依赖管理员是否登录。你会怎么安排?
让 AI 帮你做复制给 AI Agent 直接用
请为运营后台实现一个定时任务:按业务时区每天凌晨汇总前一天的订单,保存结果供报表页读取。请说明调度器部署在哪里,并处理重复触发、运行失败的记录与手动补跑;不要依赖管理员访问页面。