learning
搭建自动化 Cron 任务
当前阅读:进阶视角
本单元目标
学完本单元后,你将能够在 Hermes 平台中独立创建、调试并部署 Cron 定时任务,将周期性触发的重复工作(如数据同步、报表生成)转变为无人值守的自动化流程。
概念讲解
Cron 任务的核心是“时间表达式”与“执行动作”的绑定。时间表达式采用标准的五位字段格式:`分 时 日 月 周`,例如 `0 9 * * 1` 表示每周一上午 9 点整触发。`*` 代表任意值,`*/15` 表示每隔 15 个单位,逗号用于枚举多个值。理解粒度是关键:分钟字段的精度决定了任务最短触发间隔,而日和周字段同时存在时,两者是“或”关系,这一点常被误用。
在 Hermes 平台中,Cron 任务不仅是一个定时器,更是一个事件源。它可以将触发产生的上下文(如执行时间戳、上次运行状态)注入到工作流的下游节点,从而实现条件分支——例如“仅在周一执行全量同步,其余时间执行增量同步”。高级场景下,你还需要考虑任务的幂等性:由于 Cron 无法保证恰好一次执行(平台可能因故障重试),你的任务逻辑必须能容忍重复触发而不产生脏数据。此外,平台的调度器基于 UTC 时区,跨时区团队需要显式换算本地时间,否则会出现“凌晨 3 点被唤醒”的经典事故。
实操演练
- 在 Hermes 控制台左侧导航栏进入“自动化 → Cron 任务”,点击“新建任务”,输入任务名称 `nightly-data-sync` 并选择执行环境为 `production`。
- 在“触发规则”区域,将时间表达式设置为 `0 2 * * *`,时区选择 `UTC`,并开启“错过补跑”开关,确保服务器休眠期间错过的任务在恢复后自动执行。
- 在“动作配置”中,选择“调用工作流”类型,下拉选中已创建的数据同步工作流,并将“执行模式”设为 `await-completion`,以便记录任务的实际运行结果。
- 展开“高级设置”,勾选“失败重试”并设置重试次数为 3、退避策略为 `exponential`,同时开启“并发保护”防止上一次未跑完时下一次触发被跳过。
- 点击“保存并测试”,在右侧“测试面板”中手动触发一次模拟执行,确认工作流成功运行且日志中输出了预期的执行时间戳后,点击“启用”使任务生效。
练习任务
- 创建一个每 15 分钟执行一次的 Cron 任务,调用一个简单的日志工作流,连续观察 3 次触发记录,并截图展示时间间隔精确为 900 秒。
- 将上述任务的时间表达式修改为 `*/20 9-18 * * 1-5`,验证其仅在周一至周五的 9:00-18:59 之间每 20 分钟触发,并提交一份包含触发时间列表的导出报告。