首页 > 解决方案 > Python Luigi:处理缺失依赖的有效方法

问题描述

目前我正在使用 Luigi 库来创建一个数据管道。在我的管道结束时,我有一个 Plot 函数,它看起来像这样:

class PlotAll(luigi.Task):
...
    def requires(self):
        return{
            "tool1" : analyzeTool1Data(...),
            "tool2" : analyzeTool2Sata(...)}
    def run(self):
        data1 = numpy.load(self.input()["tool1"])
        data2 = numpy.load(self.input()["tool2"])
        plot(data1, data2)
        
...

所以现在有时我只有来自 Tool1 的数据,或者我只有来自 Tool2 的数据。比我只想绘制一个工具中的数据。有没有一种优雅的方法来告诉函数如果缺少一个依赖项,它应该忽略该输入并与其余的一起工作?

到目前为止,我的想法是,首先检查那里有哪些数据,然后创建依赖于它的依赖项。

标签: pythonluigi

解决方案


luigi 的整个想法是,它确保任务的所有依赖项在运行之前都准备好。

它没有可选依赖的概念,但你可以有动态依赖

您的另一个选择可能analyzeTool1Data是以这样一种方式定义任务,即使它失败或数据丢失,它仍然会生成输出,因此 luigi 仍然认为它们已经运行。


推荐阅读