4

requiresサブタスクであるルイージタスクがあります。サブタスクは、親タスク (つまり、requireing を実行しているタスク) によって渡されるパラメーターに依存します。サブタスクが使用できるパラメーターを設定することで指定できることは知っています...

def requires(self):
    return subTask(some_parameter)

...次に、サブタスクで、設定してパラメーターを受け取ります...

x = luigi.Parameter()

ただし、1 つのパラメーターのみを通過させるように見えます。どのようなタイプの任意の数のパラメーターを送信する最良の方法は何ですか? 本当に私はこのようなものが欲しいです:

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 の実行

4

4 に答える 4