【发布时间】:2019-11-03 10:39:00
【问题描述】:
我有一个 DAG,我只需要同时运行一个实例。为了解决这个问题,我使用 max_active_runs=1 可以正常工作:
dag_args = {
'owner': 'Owner',
'depends_on_past': False,
'start_date': datetime(2018, 01, 1, 12, 00),
'email_on_failure': False
}
sched = timedelta(hours=1)
dag = DAG(job_id, default_args=dag_args, schedule_interval=sched, max_active_runs=1)
问题是:
当 DAG 将被触发并且有一个实例正在运行时,AirFlow 会等待此运行完成,然后再次触发 DAG。
我的问题是:
在这种情况下,有什么方法可以跳过此运行,使 DAG 在此执行后不会运行?
谢谢!
【问题讨论】:
-
您可以在您的 dag 中放置一个任务,它会检查气流数据库的 dag_run 表中是否有任何具有相同 dag_id 且状态为“正在运行”的 dag,如果有两个实例正在运行相同dag 你可以让 dag 失败。
-
@ShahbazAli 这是个好主意!但是我怎样才能找到 DAG ID 以及如何查询呢?谢谢!
-
请注意,它们没有一起运行,因为我将 max_active_runs 设置为 1。AirFlow 只是保持触发器直到前一个完成。
-
我可以尝试这样的事情,但不确定这是否是解决此问题的最佳方法:*.com/questions/43732642/…