我有一个 Luigi 任务,它是requires
一个子任务。子任务取决于父任务(即正在执行的任务)传递的参数require
。我知道您可以通过设置指定子任务可以使用的参数...
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
,但是TypeError: unhashable type: 'dict'
当我运行上面的代码时,我是从 Luigi 深处的某个地方得到的。
运行 Python 2.7.11、Luigi 2.1.1