Python Luigi:处理缺失依赖项的有效方法

Python Luigi: Efficent way to handle missing dependencies

目前我正在使用 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 的数据。比我只想绘制来自一个工具的数据。是否有一种优雅的方式告诉函数如果缺少一个依赖项,它应该忽略该输入并处理其余的输入?

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

luigi 的整体理念是确保任务的所有依赖项在 运行 执行之前就绪。

它没有可选依赖的概念,但你可以 dynamic dependencies

您的另一个选择可能是定义任务 analyzeTool1Data,即使它失败或数据丢失,它仍然会生成输出,所以 luigi 仍然认为他们有 运行.