2017-03-30 20 views
5

私は非常に簡単な方法でluigiの仕組みを学びたいと思っています。ただ、初心者として、私は、コマンドプロンプトでこれを実行して、このコードLuigi - 実行時の%sが未完了

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() 

を思い付いたことは、あなたがclass2のための出力を定義し、それを作成したことがないので、これが起こる

raise RuntimeError('Unfulfilled %s at run time: %s' % (deps, ',  
+0

実行するコマンドは何ですか?あなたの 'run()'メソッドは依存関係を満たすために 'LocalTarget'で参照される出力ファイルを作成する必要があります。 – MattMcKnight

答えて

6

を言ってエラーが発生します。

python file.py class2 --local-scheduler 

を実行している場合

ルイージが要求されます...のは、それを打破してみましょう:

  • はすでにディスク上class2の出力ですか? class2のNO
  • チェックの依存関係:NONE
  • は、エラーを返しませんでしたrun(それはだ、デフォルトでは、空の方法pass)メソッド
  • runメソッドを実行していないので、ジョブが正常に終了します。しかし

python file.py class1 --local-scheduler 

ルイージを実行します:

  • がディスク上すでにclass1の出力がありますか? NO
  • チェックタスクの依存関係:YES:クラス2
    • の状態を確認するためにclass2
    • 一時停止は、ディスク上のclass2の出力ではありませんか?ランニング>- - NO
    • 実行class2>エラー
    • ことなく行うには、ディスク上のclass2の出力ではありませんか? NO - その前のすべての依存関係が満たされない限り、>エラーを発生させる

ルイージは、タスクを実行することはありません。 (つまり、出力がファイルシステム上にある)

関連する問題