我使用airflow v1.7.1.3
我有两个DAG,dag_a和dag_b。 我一次设置了10个dag_a任务,理论上应该逐个执行。实际上,10个dag_a任务是并行执行的。 并发参数不起作用。谁能告诉我为什么?
这是伪代码:
在dag_a.py
中dag = DAG('dag_a',
start_date=datetime.now(),
default_args=default_args,
schedule_interval=None,
concurrency=1,
max_active_runs=1)
在dag_b.py
中from fabric.api import local
dag = DAG('dag_b',
start_date=datetime.now(),
default_args=default_args,
schedule_interval='0 22 */1 * *',
concurrency=1,
max_active_runs=1)
def trigger_dag_a(**context):
dag_list = []
for rec in rang(1,10):
time.sleep(2)
cmd = "airflow trigger_dag dag_a"
log.info("cmd:%s"%cmd)
msg = local(cmd) #"local" is function in fabric
log.info(msg)
trigger_dag_a_proc = PythonOperator(python_callable=trigger_dag_a,
provide_context=True,
task_id='trigger_dag_a_proc',
dag=dag)
答案 0 :(得分:8)
您可以通过指定池来限制任务实例。
答案 1 :(得分:1)
AFAIK,外部dag触发器不尊重DAG的concurrency / max_active_runs参数。这也适用于回填。
只有调度程序安排的dag运行才会遵循这些参数。