浏览 AI 知识库

定时任务怎么设置:写清输入、失败通知、重试和停止条件

定时任务需要的不只是执行时间。输入来源、幂等、最大重试、失败通知和停止条件缺一项,都可能让一次小故障变成持续外部影响。

按实际操作顺序推进

每完成一段就检查当前输出,确认结果符合预期后再继续。

  1. 01准备动手前,把材料和不能改的部分定下来
  2. 02执行同一批次重复触发时,只产生一个结果
  3. 03检查为什么“失败通知发出,但无法安全重跑”还不能交付
  4. 04完成调度契约与失败演练记录通过哪些检查才算完成
从手头这一份材料开始

凌晨任务每分钟重试,为什么早上才发现限额耗尽

凌晨任务失败后每分钟重试,持续向供应商接口发送相同订单,早上才发现限额耗尽。没有通知、最大重试和停止条件的定时任务不是自动化。

  • 输入与成功条件明确
  • 重试次数和停止条件有限
  • 告警和恢复演练实际完成
本例材料

动手前,把材料和不能改的部分定下来

需要确认本例内容
现有材料任务每天 02:00 导入前一天订单;输入文件可能迟到;接口支持幂等键;值班邮箱可接收告警。
不能越过的边界写明输入、水位、幂等、超时、有限退避、失败通知和手动停止;不无限重试。
要交付的结果调度契约与失败演练记录
实际操作

定时任务怎么设置,从“输入和触发”开始做

输入和触发

定义时间、时区、节假日、数据就绪条件和补跑方式,避免仅靠整点假设。

幂等与并发

使用批次 ID、唯一键或状态表,重复触发不重复发送、扣费或覆盖。

超时与重试

区分可重试瞬时错误和永久错误,设置退避、最大次数与死信或待处理区。

通知与观测

日志含任务、批次、开始结束、输入输出和错误层;失败通知有独立通道和负责人。

停止与恢复

提供禁用开关、清理部分结果、从检查点恢复和人工批准路径,先做故障演练。

定时任务演练

同一批次重复触发时,只产生一个结果

故障输入预期证据
输入晚到9:00 任务启动但数据未完成进入待处理,不生成空报表批次状态和重试原因
重复触发同一 batch_id 启动两次只有一个输出和通知唯一键/锁日志
上游超时30 秒无响应退避后有限重试,超限告警重试次数和死信
部分成功3/5 文件完成可从检查点恢复,不重复 3 个文件级状态和恢复记录

时间和批次为演示;真实调度需按时区、节假日和业务窗口配置。

最终输出

完成后的调度契约与失败演练记录

调度契约规定文件未到时每 15 分钟重试最多 4 次;接口错误指数退避 3 次;同一批次使用固定幂等键。最终失败发含批次、错误和处理入口的邮件,任务进入 paused 而非继续循环。

常见失败

为什么“失败通知发出,但无法安全重跑”还不能交付

失败通知发出,但无法安全重跑

原因
任务没有记录已完成游标和幂等范围
怎么改
保存批次状态、输入哈希和已处理位置,演练从失败点恢复
验收方式

调度契约与失败演练记录通过哪些检查才算完成

进一步核对

脚本自动化:参考资料与核对入口