【发布时间】:2020-07-18 17:57:57
【问题描述】:
我的组织使用仅在手动触发器上运行的 DAG 已经有一段时间了。 dag 与之交互的任何外部资源都由执行日期 {{ ds_nodash }} 参数化。
我们最近将此 dag 转换为按周计划运行,我发现气流“调度程序在其计划周期结束时触发 DAG 运行,而不是在其开始时”。我完全没想到会这样。我不是在讨论气流的调度程序设计,而是在寻找一些关于如何编写可以通过手动触发和预定间隔工作的 DAG 的建议。
这是我的具体困境:
- 为了解决调度程序使用周期开始的事实,我可以使用 {{ next_ds_nodash }},但是手动触发的 dag 永远不会通过它自己的执行日期参数化
- 手动触发时,我们想查看过去 7 天的另一个文件:{{ execution_date - macros.timedelta(days=7)).strftime("%Y%m%d") }}。当计划触发时,现在看起来是过去 14 天。我怎样才能做到这两点?
我不是在寻找解决我的困境的直接解决方案,而是想知道我打算按计划手动运行 DAG 是否真的很不寻常?如果不是什么是我的困境的具体解决方案或一些编写 DAG 的最佳实践,您可以手动触发和安排。
【问题讨论】: