luigi管道等待外部任务超时

时间:2018-09-29 22:32:56

标签: python luigi

我试图配置luigi来运行一个管道,其中初始输入是另一个管道的输出。 此外,如果第一次没有准备好数据,我想重试一段时间,但是在达到超时时放弃。

我写了一个简单的脚本进行测试:

class InputDataTask(luigi.ExternalTask):                                                                                                                                                                           
    target = Parameter()                                                                                                                                                                                           
    def output(self):                                                                                                                                                                                              
        return [luigi.LocalTarget(self.target)]                                                                                                                                                                    

class CleanTask(luigi.Task):                                                                                                                                                                                       
    def output(self):                                                                                                                                                                                              
        return luigi.LocalTarget("cleaned/cleaned")                                                                                                                                                                

    def requires(self):                                                                                                                                                                                            
        reqs = []                                                                                                                                                                                                  
        reqs.append(InputDataTask(target = "input/file1"))                                                                                                                                                         
        reqs.append(InputDataTask(target = "input/file2"))                                                                                                                                                         
        reqs.append(InputDataTask(target = "input/file3"))                                                                                                                                                         
        return reqs                                                                                                                                                                                                

    def run(self):                                                                                                                                                                                                 
        with self.output().open("w") as output_file:                                                                                                                                                               
            output_file.write("pipeline")                                                                                                                                                                          

if __name__ == '__main__':                                                                                                                                                                                         
    luigi.run()                                                                                                                                                                                                    

我使用以下命令运行脚本:

python luigi-example-easy.py CleanTask --worker-retry-external-tasks --worker-wait-interval 10 --worker-keep-alive

如果开头有可用的输入,则执行Task,就可以了。

如果输入并非全部可用,脚本将等待并检查任何10秒钟以进行更新。该任务还能够了解输入是否可用以及CleanTask是否启动(这也很好)。

问题是,我想在超时的情况下(即2小时后)自动结束此脚本。

我尝试了不同的luigi选项,但无法获得此结果。

您有什么见识?谢谢

0 个答案:

没有答案