Ich schrieb einen Artikel "Zur Verbesserung der Wiederverwendbarkeit und Wartbarkeit von mit Luigi erstellten Workflows" (http://qiita.com/ngr_t/items/b928bc13457571e25519). Unter diesen [überprüfen Sie die Eingabe- / Ausgabezeitstempel in der vollständigen Methode](http://qiita.com/ngr_t/items/b928bc13457571e25519#complete-%E3%83%A1%E3], um die Konsistenz des Ergebnisses aufrechtzuerhalten. % 82% BD% E3% 83% 83% E3% 83% 89% E3% 81% A7% E3% 81% AF% E5% 85% A5% E5% 87% BA% E5% 8A% 9B% E3% 81 % AE% E3% 82% BF% E3% 82% A4% E3% 83% A0% E3% 82% B9% E3% 82% BF% E3% 83% B3% E3% 83% 97% E3% 82% 92 % E3% 83% 81% E3% 82% A7% E3% 83% 83% E3% 82% AF% E3% 81% 99% E3% 82% 8B) oder [vollständig gibt alle wirklich abhängigen Aufgaben zurück Überprüfen Sie, ob](http://qiita.com/ngr_t/items/b928bc13457571e25519#complete-%E3%81%A7%E3%81%AF%E4%BE%9D%E5%AD%98%E3%82 % BF% E3% 82% B9% E3% 82% AF% E3% 81% AE-vollständig-% E3% 81% 8C% E3% 81% 99% E3% 81% B9% E3% 81% A6-wahr- % E3% 82% 92% E8% BF% 94% E3% 81% 99% E3% 81% 8B% E3% 82% 92% E3% 83% 81% E3% 82% A7% E3% 83% 83% E3 Ich schrieb über die Wichtigkeit,% 82% AF% E3% 81% 99% E3% 82% 8B) zu sagen.
Standardmäßig bestimmt Luigi das Ende einer Aufgabe nur als "ob es eine Ausgabe gibt oder nicht", was unter dem Gesichtspunkt der Erstellung konsistenter Berechnungsergebnisse unpraktisch ist. Achten Sie daher auf die obigen Punkte. Sie müssen bezahlen. Aus diesem Grund habe ich versucht, "Task" für Data Science zu erweitern, wobei die Reproduzierbarkeit der Ergebnisse stärker betont wurde. Es befindet sich im folgenden Repository.
https://github.com/ngr-t/luigi_for_data_science
Ich habe kein Setup-Skript geschrieben, aber es hängt derzeit vom Portalocker-Modul (und natürlich von Luigi) ab.
Eine Wurst
hash_checking_tasks.HashableTarget
ordnungsgemäß implementieren.Es wird sein.
TaskWithCheckingInputHash
erweitert Task
wie folgt:
--Überprüfen Sie, ob die Methode complete ()
aller abhängigen Tasks True
zurückgibt.
Die Verarbeitung wie das Generieren spezifischer Hash-Werte bleibt "HashableTarget" überlassen. HashableTarget
ist implementiert, damit es die folgenden Operationen ausführen kann.
Ich habe in einem früheren Artikel geschrieben, dass "Überprüfen Sie den Zeitstempel", aber was wichtig ist, ist nicht das Datum, sondern die Äquivalenz von Eingabe und Ausgabe. Ist es nicht besser, den Hashwert zu überprüfen? Ich habe das nach dem Schreiben dieses Artikels noch einmal überdacht.
Wenn Sie jedoch den Hash-Wert überprüfen möchten, müssen Sie den Hash-Wert zwangsläufig irgendwo aufbewahren, was ein etwas kompliziertes Problem darstellt. HashableLoaclTarget
speichert die Zieldatei im Pfad mit dem Suffix" input.pickle ", behandelt jedoch nicht den Fall, in dem dieser Name in Konflikt steht.
Ich denke, dass es noch viele Dinge zu tun gibt, also werfen Sie bitte Masakari auf jeden Fall.