气流:如何为每小时一次的工作流指定条件,比如只有在当前同一实例未运行时才触发?

2024-04-26 23:06:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个工作流(包含少量任务)。每小时执行一次。仅当工作流的另一个实例未同时运行时,才应触发工作流。如果工作流正在运行,则应跳过该小时的工作流执行。

我查过“依你过去而定”,但没找到。


Tags: 实例小时
2条回答

DAG上的max_active_runs设置为1,同时将catchup设置为False

official Airflow documentation for trigger rules

当设置为True时,depends_on_past(boolean)可防止任务在之前的计划未成功时被触发。在

如果您在任务定义中使用它,它将起作用。您也可以将它与wait_for_downstream= True配对,以保证新运行的实例在任务的最后一次运行的实例完成执行之前不会开始。在

task_depends = DummyOperator( task_id= "task_depend", dag= dag, depends_on_past= True )


然而,另一种解决此问题的方法是使用Latest Run Only concept

标准工作流行为涉及在特定日期/时间范围内运行一系列任务。但是,有些工作流执行独立于运行时但需要按计划运行的任务,这与标准cron作业非常相似。在这些情况下,在暂停期间错过的回填或运行作业只会浪费CPU周期。在

对于这种情况,可以使用LatestOnlyOperator跳过在最近一次计划运行期间未运行的任务。如果现在的时间不在它的execution_time和下一个计划的execution_time之间,LatestOnlyOperator将跳过所有直接的下游任务和自身。在

相关问题 更多 >