今、DAG内のノードは、そのDAGの残りのノードが終了する前に、翌日のタスクに進みます。翌日のDAGサイクルに移行する前にDAGの残りの部分が終了するのを待つ方法はありますか?エアフロースケジューラは、前日のサイクルを最初に終了してから次のサイクルを開始することはできますか?
O
l
V
O -> O -> O -> O -> O
また、
今、DAG内のノードは、そのDAGの残りのノードが終了する前に、翌日のタスクに進みます。翌日のDAGサイクルに移行する前にDAGの残りの部分が終了するのを待つ方法はありますか?エアフロースケジューラは、前日のサイクルを最初に終了してから次のサイクルを開始することはできますか?
O
l
V
O -> O -> O -> O -> O
また、
用途:
(私は本当のようdepends_on_previousを持っていますが、それはこのケースでは動作しません)
私のDAGは、このようになりますDAGのdepends_on_past
とwait_for_downstream
編集:上記の2つの引数をテストするには、実行全体が完了するまで実際に待つ必要はありません。これを達成するためにカスタムセンサーを作成する必要がありました。
max_active_runsを設定してみてくださいその後、一度に一つのインスタンスを実行したい場合は、この答えのために少し遅れて、私は同じ問題に走ったと私はそれを解決する方法がIである可能性があります各ダグに2つの追加タスクが追加されました。最初は「前」、最後は「完了」となります。前のタスクは、前のジョブを監視する外部タスクセンサーです。 Completeはダミー演算子です。ダグは、次のようになりますので、それは30分ごとに実行されます言うことができます:
dag = DAG(dag_id='TEST_DAG', default_args=default_args, schedule_interval=timedelta(minutes=30))
PREVIOUS = ExternalTaskSensor(\
task_id='Previous_Run',
external_dag_id='TEST_DAG',
external_task_id='All_Tasks_Completed',
allowed_states=['success'],
execution_delta=timedelta(minutes=30),
dag=DAG)
T1 = BashOperator(
task_id='TASK_01',
bash_command='echo "Hello World from Task 1"',
dag=dag)
COMPLETE = DummyOperator(\
task_id='All_Tasks_Completed',
dag=DAG)
PREVIOUS >> T1 >> COMPLETE
ので、次のダグ、それはキューに来るさえカントーPREVIOUSが完了するまで、それはタスクが実行できません。
確かに、https://groups.google.com/forum/#!topic/airbnb_airflow/ qh-2zXfTeqg – nono
私はwait_for_downstreamを使用しようとしましたが、それは何が期待されていません。あなたがなぜ同じ問題を抱えているのかも知れませんでした。なぜなら、それは次の日に続く前にダグ全体が完了するのを待っていないからです。 – user3542930
@ user3542930 – nono