Luigi工作流程:具有“软”依赖项的任务?

时间:2019-01-30 22:25:10

标签: luigi

我正在使用Luigi进行依赖性解析,并且效果很好。

我还应该将Luigi用于“软”依赖吗?

让我解释一下。假设我当前的任务下载并处理了一些日期的数据。假设在那之后,我想运行一个遍历所有数据并输出简单摘要的脚本。不是每个日期一个摘要,而是每个已下载数据的摘要。

我将此称为软依赖项,因为我希望最终脚本在所有日期的数据上运行,但是如果几个日期无法下载,我仍然希望脚本在其他日期运行。

我应该如何为该用例组织任务,或者这不是Luigi的工作?

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式做到这一点。

  1. 内部要求:您可以检查文件是否“存在”,如果存在,则“屈服”任务来处理该文件。
  2. 内部运行:执行一个遍历所有文件的巨型任务,如果文件失败,则只需移至列表中的下一项。
  3. Softfail:如果文件被处理,但如果文件不存在,则执行成功的任务。如果文件存在,但是在处理过程中发生了某些事情,则使任务失败

优点和缺点:

1非常适合扩展,因为您可以并行处理这些文件。只要文件的“检查”时间不会太长。在需求内增加繁琐的工作是不可以的,因为这只会延迟整个依赖图的构建。所以如果你有一个大图,那就不好了

2是最简单的实现,因为所有处理都在1个任务中,并且可以更轻松地输出1个摘要文件。

3是我的最爱。您不需要在内部进行任何繁重的工作。它可以缩放为大图,并且您可以并行执行很多处理。这里的一大弊端是,它可能会导致那些软故障中的无声错误。如果可以确定的话,我认为您有赢家