我创建了一个工作流(包含几个任务)。这是每小时执行。仅当工作流的另一个实例未同时运行时才应触发工作流。如果它正在运行,则应跳过该小时的工作流执行。我检查了“depends_on_past”但无法得到它。
2 回答

撒科打诨
TA贡献1934条经验 获得超2个赞
该depends_on_past
(布尔),设置为True时,从保持如果任务的时间表以前没有成功得到触发一个任务。
如果您在任务定义中使用它,它将起作用。您也可以将其与它配对,wait_for_downstream= True
以确保新运行的实例在任务的最后一个运行实例完成执行之前不会开始。
task_depends = DummyOperator( task_id= "task_depend", dag= dag, depends_on_past= True )
但是,假设您只需要最新运行即可解决此问题,另一种解决方法是使用“仅最新运行”概念:
标准工作流行为涉及为特定日期/时间范围运行一系列任务。但是,某些工作流执行的任务与运行时间无关,但需要按计划运行,很像标准的 cron 作业。在这些情况下,在暂停期间错过的回填或正在运行的作业只会浪费 CPU 周期。
对于此类情况,您可以使用LatestOnlyOperator
跳过在 DAG 的最近计划运行期间未运行的任务。在LatestOnlyOperator
跳过所有直接下游的任务,而且本身,如果时间现在是不是它之间execution_time
和未来计划execution_time
。
添加回答
举报
0/150
提交
取消