基于三元运算符的luigi任务

luigi task based on ternary operator

我有一个 DAG 看起来像下面的要求


                   -> Task C -> Task D
                  | 
Task A -> Task B -
                  |
                   -> Task E -> Task F

任务 B 有一个 python 三元运算符,它决定 direction/leg 在运行时执行什么,即运行时流程将是(任务 C,任务 D)或(任务 E,任务 F)

我们如何在 luigi task requires 函数下定义这个?任何想法或代码片段将不胜感激。

您可以定义dynamic dependency.

我认为在您的示例中,您的任务 G 将取决于 B 并基于 B 的输出 yield CDEF

import luigi

class GTask(luigi.Task):
    def requires():
        return BTask()
    
    def run():
        if check_b_outout(self.input()):
            yield CTask()
            yield DTask()
        else:
            yield ETask()
            yield FTask()