我有以下简单的DAG
:
dag = DAG('test_parallel',
description='Simple tutorial DAG',
schedule_interval=None,
start_date=datetime(2017, 3, 20),
catchup=False)
def first_echo(arg):
print('\n\n')
print('FIRST ECHO! %s' % arg)
def second_echo(arg):
print('\n\n')
print('SECOND ECHO! %s' % arg)
def final_echo():
print('\n\n')
print('FINAL ECHO: ')
final_echo = PythonOperator(task_id='final_echo' , dag=dag, provide_context=False, python_callable=final_echo)
for i in range(5):
first_echo_op = PythonOperator(task_id='first_echo_%s' % i, python_callable=first_echo, op_args=[i], dag=dag)
second_echo_op = PythonOperator(task_id='second_echo_%s' % i, python_callable=second_echo, op_args=[i], dag=dag)
first_echo_op.set_downstream(second_echo_op)
second_echo_op.set_downstream(final_echo)
我的想法是,我有一系列五个独立的任务,每个任务都会导致以下任务,并且它们都会聚合到最终任务中。
问题是,在second_echo
个任务完成之前,我的first_echo
任务都不会启动。由于first_echo
任务都是独立,并且每个second_echo
任务仅依赖于之前的独立first_echo
任务,我认为他们会这样做一旦有可用的资源就运行......
如果需要,我可以提供甘特图。
问题是:假设我拥有适当数量的资源,我如何尽快在DAG中运行独立路径,而不是等待所有第一个任务完成。< / p>