强制 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 收集任务。然后将 ExternalTask​​Sensor 设置为在上一个 运行.

结束时在 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)