Luigi - 执行2个管道作业,(必须在SYNC中,而不是并行)

时间:2017-04-04 17:40:56

标签: python-2.7 luigi

我正在进入Luigi框架开发,我想在一个类中执行2个作业(两个都是管道作业),但是Job2必须只运行,而Job1完全执行。

codec => multiline {
      pattern => "/.*./g"
      negate => true
      what => "previous"        
    }  

有没有办法可以执行job1,一旦完成,就去执行Job2。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

这样做的方法是运行Job2,Job2需要Job1。

class Job2(luigi.Task):

    def requires(self):
        yield Job1(*args, **kwargs))

    def output(self):
        //statements

    def run(self):
        //statements

然后以这种方式运行Job2:

luigi --module <your_module> Job2 <tasks params>

并且luigi将首先运行Job1,在完成后,它将运行Job2。

答案 1 :(得分:1)

在一般情况下,建议使用@ matagus的答案,但如果由于某些特殊原因导致Job1无法{0}},则可以使用dynamic dependency,如下所示。< / p>

Job2

执行此任务时,如果未完成,则执行class ExecuteTwoJobs(luigi.ExternalTask): def output(self): //statements def run(self): yield Job1(*args, **kwargs) yield Job2(*args, **kwargs) ,之后运行Job1。但是,我们可以从DAG工作流程管理中获得更少的好处。