首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >多时段自动化只跑了一个点?一次"静默卡死"的排坑实录

多时段自动化只跑了一个点?一次"静默卡死"的排坑实录

原创
作者头像
用户12457203
修改2026-08-11 10:29:54
修改2026-08-11 10:29:54
830
举报

一、现象:每天都有推送,但内容永远不变

我搭了一个"每日推送某内容平台专题最新一课"的自动化。需求很明确:

每天两次 —— 20:00 推最新新课 + 次日 09:00 补推同样内容。

前两周看起来"一切正常":每天准点收到推送。直到某天随手一翻才发现,连续两周收到的永远是同一课,而平台实际已经更新到很后面的课号了。

⚠️ 最阴险的地方:它没有报错、没有中断,只是每天重复发旧内容。表面"健康",实则早就停走了。


二、排查:问题不在代码逻辑,在调度配置

自动化的内部逻辑是按"当前小时"分流的:

· 模式 A(抓新课):仅在当前小时等于 20 时执行,负责抓取专题页、发现新的一课并推送。 · 模式 B(补推):在当前小时等于 9 时执行,读取上次记录、原样重发。

逻辑本身没问题。真正的问题在最外层的触发规则 —— 决定"任务几点被启动"的调度表达式:

【错误配置】FREQ=DAILY;BYHOUR=9;BYMINUTE=0 (每天只在 09:00 启动一次) 【正确应为】FREQ=DAILY;BYHOUR=9,20;BYMINUTE=0 (09:00 与 20:00 各一次)

建自动化时,需求写了"两个时间点",但调度字段只填了 BYHOUR=9,漏了 20:00。于是:

① 任务在 20:00 根本不会被启动 → 模式 A 那段代码一次都没机会运行; ② 每天只有 09:00 的模式 B 在跑 → 它只读旧记录、不抓网页、也不更新状态; ③ 状态里的"已推课号"自初始化后再没变过 → 模式 B 每天把同一课重发一遍。

【图例说明 · 调度时间线对比】

错误配置(只 09:00): 09:00 启动 → 只跑模式 B(重发旧课) 20:00 无触发 ✗

正确配置(09:00 + 20:00): 09:00 模式 B(补推)✓ 20:00 模式 A(抓新课)✓

→ 漏填一个时间点,整条"抓新课"链路就完全失效,且毫无报错。


三、根因一句话

不是代码逻辑写错,是"需求里的多个时间点"没全部落到调度配置里。需求文字写了两次,配置字段只填了一次,又没做"触发次数"二次核对,于是静默卡死。

【图例说明 · 静默卡死因果链】

① 调度只写 BYHOUR=9,漏 20:00 ↓ ② 20:00 任务从不启动 ↓ ③ 模式 A(hour==20)入口不可达 ↓ ④ 状态"已推课号"永不更新 ↓ ⑤ 每天 09:00 模式 B 重发同一旧课

→ 每一环都不报错,最终表现为"每天都有推送,但内容不变"。


四、修复:一行配置 + 一次补推

第一步:把调度改为 FREQ=DAILY;BYHOUR=9,20;BYMINUTE=0,让 20:00 也能触发; 第二步:补一次手动推送,把状态"已推课号"从卡住的值推进到平台最新课号; 第三步:之后每天 20:00 自动抓最新、09:00 自动补推,恢复正常。

✓ 修复后验证:状态序号与平台最新课号一致,且次日推送内容确实更新了。


五、给小白的防坑清单(不用懂技术)

☑ 需求写几次,配置就填几次。需求说"每天两次(9 点、20 点)",调度里就要出现两个时间点,不能只填一个。

☑ 建完让对方"念一遍大白话"。问一句:"这个自动化一天到底跑几次、分别在几点?" 答案若和需求不符,当场补。

☑ 别只看"有没有推送",要看"推的内容在不在变"。连续多天内容一模一样 = 红灯,很可能卡死了。

☑ 每周对一次序号。瞄一眼状态里的"已推课号",对比平台实际最新课号,对不上就查配置。

【口诀】需求写几次,配置就填几次;建完念一遍,每周对一次。

【图例说明 · 防卡死自检流程】

建完核对调度次数 ↓ 每周比对:状态序号 vs 平台最新 ↓ ├─ 一致 → ✓ 正常 └─ 不一致 / 内容长期不变 → 查调度配置

→ 把"内容是否在变"当成健康检查指标,比只看"有没有发"可靠得多。


六、小结

"多时段定时"自动化最容易翻车的点,不是逻辑写错,而是调度字段没把需求里的所有时间点都填全。它不会报错,只会安静地重复旧动作。

记住三件事就够了:需求几次就填几次、建完念一遍次数、每周对一次序号。这套方法同样适用于"每日 N 次推送 / 定时采集 / 多时段提醒"任何场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、现象:每天都有推送,但内容永远不变
  • 二、排查:问题不在代码逻辑,在调度配置
  • 三、根因一句话
  • 四、修复:一行配置 + 一次补推
  • 五、给小白的防坑清单(不用懂技术)
  • 六、小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档