我正在进入Luigi框架开发,我想在一个类中执行2个作业(两个都是管道作业),但是Job2必须只运行,而Job1完全执行。
codec => multiline {
pattern => "/.*./g"
negate => true
what => "previous"
}
有没有办法可以执行job1,一旦完成,就去执行Job2。
非常感谢任何帮助
答案 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工作流程管理中获得更少的好处。