【问题标题】:Run Airflow task at separate time from the rest of the DAG's tasks与 DAG 的其他任务分开运行 Airflow 任务
【发布时间】:2018-08-27 22:56:41
【问题描述】:

我有一个每天在特定时间运行一次的 Airflow DAG。 DAG 运行一堆 SQL 脚本来在数据库中创建和加载表,最后一个任务更新权限,以便用户可以访问这些表。目前,权限任务要求所有之前的 SQL 任务都已完成,因此这意味着如果 任何 表任务失败,则不会更新任何表的权限。

为了解决这个问题,我想创建另一个在预设时间运行的权限任务(即备份任务),而不管之前任何任务的状态如何(多次更新权限也无妨)。如果我没有指定与 DAG 的时间不同的时间,那么由于新任务没有依赖关系,因此该任务将在更新任何表之前尝试更新权限。是否有设置让我将 cron 字符串传递给特定任务?或者是否可以选择在任务的 DAG 时间之上传递 timedelta?我需要在 DAG 时间之后运行该任务。

【问题讨论】:

    标签: airflow


    【解决方案1】:

    如果无论上游任务的结果如何,您的权限任务都可以运行,我认为最好的选择是将您的权限任务的trigger_rule更改为all_donedefault is all_success)。

    如果您需要在发生故障时做一些特定的事情,您可以考虑创建一个辅助 DAG,第一步是一个传感器,等待主 DAG 完成 State.FAILED,然后运行您的权限任务。

    如果您想在 DAG 之间建立依赖关系,请查看 ExternalTaskSensor

    我尚未检查,但您可能还需要在传感器上使用 soft_fail 以防止在主 DAG 成功完成时辅助 DAG 显示为失败。

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      相关资源
      最近更新 更多