为了账号安全,请及时绑定邮箱和手机立即绑定

气流:仅当当前相同的实例未运行时,如何为每小时工作流指定条件,例如触发器?

气流:仅当当前相同的实例未运行时,如何为每小时工作流指定条件,例如触发器?

MMMHUHU 2021-09-02 20:33:35
我创建了一个工作流(包含几个任务)。这是每小时执行。仅当工作流的另一个实例未同时运行时才应触发工作流。如果它正在运行,则应跳过该小时的工作流执行。我检查了“depends_on_past”但无法得到它。
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

max_active_runs您设置DAG为 1 并设置catchupFalse


查看完整回答
反对 回复 2021-09-02
?
撒科打诨

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


查看完整回答
反对 回复 2021-09-02
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信