【问题标题】:Supporting manual and scheduled execution支持手动和定时执行
【发布时间】:2020-07-18 17:57:57
【问题描述】:

我的组织使用仅在手动触发器上运行的 DAG 已经有一段时间了。 dag 与之交互的任何外部资源都由执行日期 {{ ds_nodash }} 参数化。

我们最近将此 dag 转换为按周计划运行,我发现气流“调度程序在其计划周期结束时触发 DAG 运行,而不是在其开始时”。我完全没想到会这样。我不是在讨论气流的调度程序设计,而是在寻找一些关于如何编写可以通过手动触发和预定间隔工作的 DAG 的建议。

这是我的具体困境:

  1. 为了解决调度程序使用周期开始的事实,我可以使用 {{ next_ds_nodash }},但是手动触发的 dag 永远不会通过它自己的执行日期参数化
  2. 手动触发时,我们想查看过去 7 天的另一个文件:{{ execution_date - macros.timedelta(days=7)).strftime("%Y%m%d") }}。当计划触发时,现在看起来是过去 14 天。我怎样才能做到这两点?

我不是在寻找解决我的困境的直接解决方案,而是想知道我打算按计划手动运行 DAG 是否真的很不寻常?如果不是什么是我的困境的具体解决方案或一些编写 DAG 的最佳实践,您可以手动触发和安排。

【问题讨论】:

    标签: airflow airflow-scheduler


    【解决方案1】:

    每当我需要按计划偶尔以手动方式运行 DAG 时,我总是...创建两个 DAG

    我认为这实际上是Airflow本身的官方推荐。只需制作两个 DAG,并设置一个像 schedule_interval = '0 5 * * 1' # Every Monday at 5:00 这样的每周计划和一个 schedule_interval = None。给他们像my_awesome_dagmy_awesome_dag_manual这样的ID。

    使用此设置,您可以随意使用并确保它始终查看与 execution_date 相关的文件。然后,您可以将它们都保留在 GUI 中 ON 中,而每周的确实每周都会触发,而另一个只有在您按下播放按钮时才会触发。

    【讨论】:

    • 如果气流推荐,请提供文档链接。这将帮助其他人确定答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2017-07-27
    相关资源
    最近更新 更多