演算子(タスクインスタンス)に「開始日」が必要な理由がわかりません。 DAGに渡すもので十分ではありませんか?
また、現在の時刻が2018年2月7日午前8時30分(UTC)であり、dagのstart_dateを2018年2月7日0.00 amに設定した場合、スケジュール間隔のcron式は30 9 * * *(毎日午前9時30分、つまり次の1時間で実行されます)。 DAGは今日の午前9時30分または明日(2月8日の午前9時30分)に実行されますか?
タスクインスタンスのstart_dateについては、これを使用したことがないので、DAGのstart_dateは常に1つだけです。
ただし、これを見ると、メインDAGとは異なる時間に開始する特定のタスクを指定できることがわかります。これはレガシー機能であり、FAQを読むことから、代わりにそのタイプの時間センサーを使用し、DAGを介して渡されるすべてのタスクに対して1つのstart_dateを使用することをお勧めします。
2番目の質問:
実行の実行日は常に、スケジュールに基づく前の期間です。
ドキュメントから (Airflow Docs)
1日のschedule_intervalでDAGを実行すると、2016-01-01T23:59の直後にスタンプが押された2016-01-01の実行がトリガーされます。つまり、対象となる期間が終了すると、ジョブインスタンスが開始されます。
明確にするために:
一部の複雑な要件では、タスクレベルで特定のタイミングが必要になる場合があります。たとえば、DAGを1週間毎日実行してから、一部の集計ログタスクが実行を開始するようにしたい場合、タスクレベルで異なる開始日を設定できます。
もう少し役立つ情報... airflow DAG
クラスソースを見ると、DAGレベルでstart_date
を設定すると、タスクstart_dateのデフォルト値がない場合にタスクに渡されるだけのように見えますdefault_args
辞書を介して、または特定のstart_date
がタスクごとのレベルで定義されていない場合に、DAGに渡されました。したがって、DAG内のすべてのタスクを同時に開始する必要がある場合(依存関係は別にして)、DAGレベルでstart_date
を設定するだけで十分です。
すでにここにあるものに追加するだけです。別のタスクに依存するタスクには、その依存関係の開始日以上の開始日が必要です。