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 仍然认为他们有 运行.
目前我正在使用 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 仍然认为他们有 运行.