LoginSignup
4
2

More than 5 years have passed since last update.

Luigiの依存関係に対する誤解と解釈

Last updated at Posted at 2017-02-01

Luigiフレームワークに関して、ずっと誤解しており、非常に苦しんだため、もしかしたら同じ悩みで苦しむ人もいるかもしれないため、書き遺しておきます。

依存とは何なのか

誤解

  • 依存先タスクの完了を待つ

実際

  • 依存先タスクの完了は待つ
  • 後続処理の続行には、依存先タスクの成功が必要

依存関係におけるタスクの成功と失敗とは

タスクの成功

outputで指定したターゲットへのファイル出力

タスクの失敗

タスク内における例外発生

この誤解が孕む問題

例えば、以下のようなケースを考えます。
inputで引き取ったリストに記載されている、1000行そこそこのURLのリストを読み取り、そのURLからファイルを引き取る処理。
ありがちな処理かと思いますが、ここに罠があります。
1000個、ファイルをダウンロードしてくるために直列処理はしたくないですし、inputで引き取ったデータを元にタスクにパラメータを与えたいため、動的依存として書くことになると思います。
仮に1000個作成されたタスクのうち、一つでもタスクが失敗すれば、後続処理は実施されません。
しかしながら、WEBサーバの不調や、URLの記載誤りによって、一個や二個、タスクが失敗するケースというのは往々にして考えられるわけで、それによって、後続の処理が停止してしまっては困る場合。
この場合、後続処理タスクとタスク生成をしているタスクに依存関係を張ってはならず、luigiの外で処理を書くべきであるという結論です。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2