У меня есть задача Луиджи, что requires
подзадача. Подзадача зависит от параметров, переданных родительской задачей (т. Е. Той, которая выполняет команду require
). Я знаю, что вы можете указать параметр, который подзадачи можно использовать, установив ...Как передать несколько аргументов в подзадачу Luigi?
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'
где-то глубоко внутри Луиджи, когда я бегу выше.
Запуск Python 2.7.11, Луиджи 2.1.1