气流 - 为什么没有触发规则"一个完成"?我错过了什么吗?

时间:2017-07-20 11:43:21

标签: python-2.7 python-2.x airflow

我试图在气流dag中做这个流程。

  • 任务1:检查s3(s3传感器)中是否存在文件。如果未找到新文件,请跳至任务4。
  • 任务2:如果任务1符合条件,则删除本地文件夹中的现有文件
  • 任务3:如果任务2完成,请将s3文件下载到本地文件夹
  • 任务4:在任何一种情况下,更新表(使用文件夹中的唯一文件)

我不确定在任务4中添加什么触发器规则。如果我添加one_failed,显然如果文件存在则不会执行该任务。

如果我添加" all_done"它不会被执行,因为在任何一条路径中,dag都会跳过任务(这就是整个目的)。

我应该怎么做?我想我在这里错过了什么...

谢谢大家。

更新

似乎我的s3keysensor没有触发"失败"超时时的状态。它显示为黄色,即使日志显示" Snap,time out out"。

应该触发失败。这是来自文档。 "传感器操作员会以一定的时间间隔继续执         如果标准超时则会达到并失败。"

此消息显示在控制台中"这些任务已陷入僵局:{...}。"并且dag不继续运行。无法运行任务4!我也在尝试使用相同的开始和结束日期的回填,这是正确的吗?

1 个答案:

答案 0 :(得分:2)

好。似乎Airflow无法拥有“空路”。所以你只需要在任务4上添加一个虚拟分支 - 假,然后“ONE_SUCEED”。

这很简单。