2

短縮版:

gmakeが行うことを実行できるPythonのタスクスケジューラはありますか? 特に、依存関係を再帰的に解決するタスク スケジューラが必要です。ルイージを調べましたが、直接の依存関係のみを解決しているようです。

長いバージョン:

事前に定義された順序で多くのデータ ファイルを処理するワークフローを構築しようとしています。後のタスクは、いくつかの前のタスクの出力に直接依存する可能性がありますが、これらの出力の正確さは、さらに前のタスクに依存しています。 .

たとえば、次のような依存関係マップを考えてみましょう。

A <- B <- C

タスク C の結果を要求すると、Luigi は自動的に B をスケジュールし、B は A に依存するため、A をスケジュールします。したがって、最終的な実行順序は [A, B, C] になります。各タスクは、実行が成功した印として公式の出力ファイルを作成します。これは、最初の実行には問題ありません。

ここで、タスク A の入力データを間違えたとします。どうやら、チェーン全体を再実行する必要があるようです。ただし、出力ファイルを A から削除するだけでは機能しません。ルイージは B と C の出力を見て、タスク C の要件が満たされ、実行は不要であると結論付けるためです。A に依存するすべてのタスクから出力ファイルを削除して、再度実行する必要があります。単純なケースでは、Luigi が A に加えられた変更を検出できるように、A、B、および C からすべての出力ファイルを削除する必要があります。

これは非常に不便な機能です。相互にかなり複雑な依存関係を持つ数十または数百のタスクがある場合、タスクの 1 つを再実行する必要があるときに、どのタスクが影響を受けるかを判断するのは非常に困難です。依存関係を解決する機能を備えたタスク スケジューラの場合、依存関係が再帰的にチェックされ、最も深いソース ファイルの 1 つが変更されたときに最終ターゲットが再構築される GNU-Make と同様に、Luigi が動作できることを期待します。

誰かがこの問題についていくつかの提案を提供できるかどうか疑問に思っていました. Luigi のいくつかの重要な機能が不足していますか? gmake として機能する他のタスク スケジューラはありますか? 私は特に Python ベースのパッケージに興味があり、それらが Windows をサポートすることを好みます。

どうもありがとう!

4

2 に答える 2