Python 运行taskA并使用在luigi中返回taskA的参数运行下一个任务

Python 运行taskA并使用在luigi中返回taskA的参数运行下一个任务,python,pipeline,luigi,Python,Pipeline,Luigi,我有一个任务,它生成应该处理的文件: class TaskA(luigi.Task): def run(self): # some code which generates list of files into output() def output(self): return luigi.LocalTarget(filepath='/path/to/process_these_files.json') 我有一个包装器任务,它应该运行TaskA,

我有一个任务,它生成应该处理的文件:

class TaskA(luigi.Task):
    def run(self):
        # some code which generates list of files into output()
    def output(self):
        return luigi.LocalTarget(filepath='/path/to/process_these_files.json')
我有一个包装器任务,它应该运行TaskA,获取参数,并运行带有值的处理任务,我将这些值放入process\u files.json中

class RunAll(luigi.WrapperTask):
    def requires(self):
        files = json.load(TaskA().open('r'))
        for file in files:
            yield ProcessFileTask(file=file)

有什么办法吗?

您可以使用动态依赖关系。这些是运行时已知的依赖项。每次
生成一个动态依赖项时,
run()
方法将一直保持,直到依赖项完成为止

例如:

class RunAll(luigi.WrapperTask): 
    def requires(self): 
        return TaskA() 

    def run(self):
        files = json.load(self.input().open('r')) 
        for file in files: 
            yield ProcessFileTask(file=file)

另请参见

我已经尝试过这种方法,但如果我使用的是2+个worker,则即使来自动态依赖项的任务已完成,也会出现无限循环问题