2017-03-30 57 views
5

Luigi'nin nasıl çalıştığını çok basit bir şekilde öğrenmeye çalışıyorum. Sadece Bir aceminin komut isteminde Bu Running bu koduLuigi - Unilfilled% s çalışma zamanında

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

ile geldi Eğer class2 için bir çıkış tanımlamak ancak oluşturun asla Bunun nedeni

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

Çalıştırmak için hangi komutu kullanıyorsunuz? Bağımlılıkların karşılanması için 'run()' yöntemlerinin 'LocalTarget' içinde başvurulan çıktı dosyalarını oluşturması gerekir. – MattMcKnight

cevap

6

diyerek hata veriyor.

en yıkmak edelim

...

python file.py class2 --local-scheduler 

luigi soracaktır çalıştırırken:

  • diskte zaten class2 çıktı mı? class2 YOK
  • onay bağımlılıkları: YOK
  • hataları dönmedi run (öyle varsayılan olarak boş bir yöntem pass) yöntemini
  • çalışma yöntemini yürütmek, bu yüzden işi başarıyla bitirir. Ancak

,

python file.py class1 --local-scheduler 

luigi çalışan yapacaktır:

  • diskte zaten class1 çıktı mı? HAYIR
  • onay görev bağımlılıkları: EVET: class2
  • duraklama
    • diskte class2 çıktısı olan Class2 durumunu kontrol etmek? HAYIR
    • koşmak class2 -> çalışıyor -> hatasız yapılması
    • diskte class2 çıktı mı? HAYIR -> önceki bağımlılıkları tümü karşılandığında sürece hata

luigi bir görevi asla kaçmaz yükseltmek. (yani çıktıları dosya sistemindedir)

İlgili konular