第 30 篇生成了每日运行健康报告。系统已经能告诉我们一次模拟盘运行是健康、警告还是阻断。
第 31 篇开始处理另一个生产化问题:任务不能什么时候想跑就跑。模拟盘日报如果在行情没收完、复权没更新、人工还没确认的时候运行,结果再漂亮也不可信。
时间窗解决什么
定时任务最怕两种错误。
一种是晚了不跑,日报缺一天。另一种是早了乱跑,拿着半截数据生成建议。
第 31 章不直接接 cron,也不绑定具体调度平台,只抽一个小对象:给定当前时间和允许运行窗口,判断现在能不能跑;如果不能跑,告诉调用方下一次窗口从什么时候开始。
| 场景 | 结果 |
|---|---|
| 当前时间在窗口内 | allowed=True |
| 当前时间在窗口外 | allowed=False,返回 next_run_at |
| 窗口跨午夜 | 支持 23:00 到 01:00 这类配置 |
运行窗口对象
第 31 章新增 app/run_window.py。
@dataclass(fr