【问题标题】:Luigi dealing with missing tasks with mutiple dependency tasksLuigi 处理具有多个依赖任务的缺失任务
【发布时间】:2020-05-10 21:25:06
【问题描述】:

假设我有 5 个不同时期的大约 5 个任务,每个输出一个 excel 文件。然后我需要将这 5 个输出文件合并到一个新任务中,但其中一个任务尚未完成,但我仍然希望将这 4 个文件的其余部分合并到一个文件中。有没有办法在 Luigi 中做到这一点。 这是一些可能有助于理解问题的示例代码

class MakeFile():
    period = luigi.Parameter()
    def run(self):
        return cleaned_file

class MergeFiles():
    def requires(self):
        periods = #mutiple periods
        for period in periods:
            yield MakeFile(period)

    def run(self):
        #merge files here

【问题讨论】:

    标签: python luigi


    【解决方案1】:

    要做你想做的事,你可以不写任何东西到你的output。基本上,如果任务的output 方法返回的所有内容都存在,Luigi 会检查任务是否完成。因此,您可以只打开和关闭 excel 文件而不编写任何内容,然后在 MergeFiles 中测试它们是否为空。

    除此之外,你在当前的课程中犯了几个错误。

    1. 在MakeFile 中,您不会从run 返回任何内容。您需要创建一个output 方法并返回目标。有关详细信息,请参阅https://luigi.readthedocs.io/en/stable/tasks.html#task-output。

    2. 在MergeFiles 的requires 方法中,你不要在requires 方法中yield。 yield 函数在您运行任务并且需要动态地要求额外任务时使用。如果这确实是您所需要的,您可以在此处阅读更多内容:https://luigi.readthedocs.io/en/stable/tasks.html#dynamic-dependencies。我认为你应该在你的requires 中使用return [MakeFile(period) for period in periods]。然后您可以使用self.input() 在运行中访问它们。

    【讨论】:

    • 感谢您的回答,我忘记添加output函数,如果我在MakeFile中创建了一个空的excel文件,问题就可以解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    相关资源
    最近更新 更多