强制 Airflow 的回填命令顺序 运行
Force Airflow's backfill command to run sequentially
有什么方法可以 运行 在不进行多任务处理的情况下按顺序回填?例如,如果我 运行 回填有几个日期,例如
airflow backfill [dag] -s "2017-07-01" -e "2017-07-10", 有没有办法在第二天运行之前完成每个dag?现在正在完成每个任务的所有天数,然后再进行下一个任务。
谢谢。
您可以将 DAG 的 max_active_runs
参数设置为 1,这将确保只有一个 DAG 运行 会同时为该 dag 安排。 https://pythonhosted.org/airflow/code.html?highlight=concurrency#models
如果您需要在继续之前完成整个 dag,您可以在 DAG 的开头添加一个 ExternalTaskSensor
,并在末尾添加一个 DummyOperator
收集任务。然后将 ExternalTaskSensor 设置为在上一个 运行.
结束时在 DummyOperator 上触发
dag = DAG(dag_id='dag')
wait_for_previous_operator = ExternalTaskSensor(\
task_id='wait_for_previous',
external_dag_id='dag',
external_task_id='collection',
execution_delta=schedule_interval,
dag=dag)
collection_operator = DummyOperator(\
task_id='collection',
dag=dag)
wait_for_previous_operator.set_downstream(your_other_tasks_list)
collection_operator.set_upstream(your_other_tasks_list)
有什么方法可以 运行 在不进行多任务处理的情况下按顺序回填?例如,如果我 运行 回填有几个日期,例如 airflow backfill [dag] -s "2017-07-01" -e "2017-07-10", 有没有办法在第二天运行之前完成每个dag?现在正在完成每个任务的所有天数,然后再进行下一个任务。
谢谢。
您可以将 DAG 的 max_active_runs
参数设置为 1,这将确保只有一个 DAG 运行 会同时为该 dag 安排。 https://pythonhosted.org/airflow/code.html?highlight=concurrency#models
如果您需要在继续之前完成整个 dag,您可以在 DAG 的开头添加一个 ExternalTaskSensor
,并在末尾添加一个 DummyOperator
收集任务。然后将 ExternalTaskSensor 设置为在上一个 运行.
dag = DAG(dag_id='dag')
wait_for_previous_operator = ExternalTaskSensor(\
task_id='wait_for_previous',
external_dag_id='dag',
external_task_id='collection',
execution_delta=schedule_interval,
dag=dag)
collection_operator = DummyOperator(\
task_id='collection',
dag=dag)
wait_for_previous_operator.set_downstream(your_other_tasks_list)
collection_operator.set_upstream(your_other_tasks_list)