Luigi - 运行时未实现的%s

Fac*_*act 8 python luigi

我想以一种非常简单的方式学习如何使用luigi.就像一个新手一样,我提出了这个代码

import luigi

class class1(luigi.Task):

  def requires(self):
     return class2()

  def output(self):
    return luigi.LocalTarget('class1.txt')

 def run(self):
    print 'IN class A'


class class2(luigi.Task): 

  def requires(self):
     return []

  def output(self):
     return luigi.LocalTarget('class2.txt')


if __name__ == '__main__':
  luigi.run()
Run Code Online (Sandbox Code Playgroud)

在命令提示符下运行此命令会出错

raise RuntimeError('Unfulfilled %s at run time: %s' % (deps, ',     
Run Code Online (Sandbox Code Playgroud)

mja*_*jel 11

发生这种情况是因为您定义了输出class2但从未创建它.

让我们分解一下......

跑步时

python file.py class2 --local-scheduler
Run Code Online (Sandbox Code Playgroud)

路易吉会问:

  • class2已经在磁盘上的输出?没有
  • 检查依赖关系class2:NONE
  • 执行run方法(默认情况下是空方法pass)
  • run方法没有返回错误,因此作业成功完成.

但是,在跑步时

python file.py class1 --local-scheduler
Run Code Online (Sandbox Code Playgroud)

路易吉将:

  • class1已经在磁盘上的输出?没有
  • 检查任务依赖性:是: class2
  • 暂停以检查class2的状态
    • class2磁盘的输出?没有
    • 运行class2- > 运行 - >完成没有错误
    • class2磁盘的输出?不 - >提出错误

除非满足以前的所有依赖关系,否则luigi永远不会运行任务.(即他们的输出是在文件系统上)