我试图配置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选项,但无法获得此结果。
您有什么见识?谢谢