【发布时间】:2016-08-24 12:13:41
【问题描述】:
我有一个 Luigi 任务,requires 是一个子任务。子任务取决于父任务传递的参数(即执行requireing 的那个)。我知道你可以通过设置来指定子任务可以使用的参数...
def requires(self):
return subTask(some_parameter)
...然后在子任务上,通过设置接收参数...
x = luigi.Parameter()
这似乎只允许您通过一个参数。通过任意数量的参数(无论我想要什么类型)发送的最佳方式是什么?我真的想要这样的东西:
class parentTask(luigi.Task):
def requires(self):
return subTask({'file_postfix': 'foo',
'file_content': 'bar'
})
def run(self):
return
class subTask(luigi.Task):
params = luigi.DictParameter()
def output(self):
return luigi.LocalTarget("file_{}.csv".format(self.params['file_postfix']))
def run(self):
with self.output().open('w') as f:
f.write(self.params['file_content'])
如您所见,我尝试使用 luigi.DictParameter 而不是直接的 luigi.Parameter,但是当我运行上述代码时,我从 Luigi 深处的某个地方得到了 TypeError: unhashable type: 'dict'。
运行 Python 2.7.11、Luigi 2.1.1
【问题讨论】: