为什么Apache Airflow计划的DAG优先于手动触发的DAG?

时间:2019-01-17 17:43:52

标签: airflow airflow-scheduler

我有一个按计划运行的DAG,并且其中的任务在路径中找到一个文件,对其进行处理,然后将该文件移动到存档文件夹中。

我没有等待时间表,而是手动触发了DAG。手动触发的DAG执行了它的第一个任务并“找到了要处理的新文件”,但是在开始第二个任务以加载该文件之前,DAG计划自动开始并开始处理同一文件。

计划的dag开始时,它暂停执行手动触发的DAG。 预定的DAG完成后,它又回到了从手动触发的DAG运行任务的状态,这导致了失败的状态,因为DAG将文件从源目录移到了归档文件中,并且手动预定的DAG开始处理“它认为是那里”归功于第一个任务的成功和信息。

所以: DAG手动触发 DAG手动触发的任务1已执行 DAG调度调用 DAG计划任务1已执行 DAG计划任务2已执行 DAG计划任务3已执行 DAG计划成功完成 DAG手动触发的任务2失败(由于在任务1中检测到计划任务2移动文件) 由于任务2失败,手动触发的DAG会跳过其他任务。 DAG手动触发失败完成

所以,我的问题是: 我该如何配置Airflow以使对同一DAG的调用以FIFO的方式执行,而不管DAG是由计划,手动还是触发器调用的?

1 个答案:

答案 0 :(得分:0)

关于这个问题:

  

为什么Apache Airflow计划的DAG优先于手动   触发了DAG?

我不能说什么。但是看一下气流代码可能是个好主意。

关于您要完成的任务:

使用已安装文件夹(或类似文件夹)中的文件,我建议您要做的第一件事是将它们复制到另一个文件夹中,并说“ process folder”,以确保这些文件不会被“ others”所触及。

在我的项目中,我们处理一组视频,并使用{{ts_nodash}}默认变量生成与触发器相关的文件夹。