跳到正文

定时任务

Cron Job

中级通用

定时任务(Cron Job)是按预设时间规则自动触发的后台工作,例如每天凌晨汇总前一天的订单。它解决的是“没人点击按钮,也要在固定时间做事”的问题,让报表生成、定期清理等工作自动运行。

你可能会说:「我想让后台每天凌晨自动汇总昨天的订单,不用等管理员打开页面才开始算。」

读之前建议先了解

动手看看

订单日报每天汇总前一天的订单
已启用
每天 2:00 · 北京时间调度器在后台检查时间
0 2 * * *分 时 日 月 星期
距离 2:00 还有 1 分钟
模拟时钟:2:00
模拟时钟:2:01
等待调度
正在汇总
执行成功
执行日志 · 6 月 18 日
今日尚未触发,暂无新日报
2:00 · 调度器自动启动任务读取 6 月 17 日订单,开始汇总。
2:01 · 订单日报已生成6 月 17 日:128 笔订单,合计 ¥24,680。
每日触发时间(北京时间)
模拟时间快照

先改每日触发时间,再依次切换三个时间快照,观察状态和日志。这是后台过程的快照模拟,不是真实计时;界面里不需要有人点击“执行”。

Cron 表达式从左到右是分、时、日、月、星期。这里固定在第 0 分钟,日、月、星期用星号,表示按北京时间每天执行。表达式本身不包含时区。

启用不等于马上运行。还没到约定时间,调度器继续等待,今天的执行日志和新日报都不会凭空出现。

要点

  1. 1

    时间规则决定何时触发

    你先约定运行时间,比如每天凌晨两点;调度器到点后再启动任务代码。时间规则只负责触发,不保证任务一定成功,所以我们还得关注运行结果。

  2. 2

    任务代码负责实际处理

    生成报表、清理过期文件的是任务代码,不是时间规则本身。把处理逻辑和触发方式分开,同一段逻辑就能在定时运行之外,也供管理员手动补跑。

  3. 3

    重复执行和漏执行要有预案

    如果上一次还没跑完,下一次又到点了,就可能同时处理同一批数据;服务停机也可能让某次任务错过。你可以和 AI 明确时区、重复执行的处理方式,以及失败后怎么发现和补跑。

容易混淆的地方

定时任务说的是“何时启动”:到预设时间才触发。后台任务说的是“在哪里执行”:把工作放到请求之外处理,两者可以组合。消息队列则通常是有消息进入后再交给消费者处理;如果你要在订单创建后立刻发邮件,事件触发比固定时间轮询更贴切。

什么时候用

适合用

  • 做电商后台时,每天凌晨汇总前一天的订单,供运营早上查看报表。
  • 做会员产品时,每天检查已到期的试用资格,并更新对应状态。
  • 做 AI 工具时,每周定期清理超过保留期限的临时生成文件。

不适合用

  • 用户点击“导出”后就要开始生成文件,这由点击触发,更适合交给后台任务处理。
  • 新订单一创建就要通知商家,等下一次定时检查会拖慢通知,可用事件触发或消息队列。
  • 只需要在部署时执行一次数据初始化,就把它放进部署流程或一次性脚本,而不是设成周期任务。

练一练

你做的运营后台需要每天早上展示前一天的订单汇总;计算可能花几分钟,也不依赖管理员是否登录。你会怎么安排?

让 AI 帮你做

请为运营后台实现一个定时任务:按业务时区每天凌晨汇总前一天的订单,保存结果供报表页读取。请说明调度器部署在哪里,并处理重复触发、运行失败的记录与手动补跑;不要依赖管理员访问页面。

接下来学什么