【问题标题】:How to override luigi complete() method so that the underlying task will come to know the previous ones were completed?如何覆盖 luigi complete() 方法,以便底层任务知道之前的任务已完成?
【发布时间】:2018-12-03 13:12:01
【问题描述】:

我有以下任务:

class TaskA(ExternalProgramTask):
    def program_args(self):
        return ["/simpleScripts/shell5.bash"]
    def program_environment(self):
        env = os.environ.copy()
        return env

shell 脚本运行正常。在此之后,如果我尝试运行任何其他任务,这些任务将通过在 TaskA 中抛出“未完成的依赖错误”而失败。

我理解的原因通常是 Luigi 将具有 output() 方法,其中创建了 localTarget,因此 Luigi 会知道该任务已完成。

在运行 shell 脚本时,我没有任何 localTarget,因此 luigi 无法理解它是否已完成。如何使这个正确?

【问题讨论】:

  • 脚本完成后为什么不直接转储目标文件?

标签: python shell luigi


【解决方案1】:

重写 Luigi 的 complete 方法,如果所有需要的操作都完成则返回 true

class TaskA(luigi.Task):
    data_text = luigi.Parameter()

    def complete(self):
        print("The task is complete")
        print("The data text", self.data_text)
        return True

luigi --module [File_Name] TaskA --data-text "Welcome" --local-scheduler

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多