在Airflow中并行运行任务,可以使用DAG(Directed Acyclic Graph)中的Operator来实现。下面是一个示例解决方法,包含一个DAG定义和两个并行运行的任务。
from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator
# 定义并行运行的任务
def task1():
print("Running task 1")
def task2():
print("Running task 2")
# 定义DAG
default_args = {
'start_date': datetime(2022, 1, 1)
}
dag = DAG('parallel_tasks', default_args=default_args, schedule_interval=None)
# 创建任务1和任务2的Operator
task1_operator = PythonOperator(task_id='task1', python_callable=task1, dag=dag)
task2_operator = PythonOperator(task_id='task2', python_callable=task2, dag=dag)
# 创建一个DummyOperator作为任务1和任务2的前置任务
start_operator = DummyOperator(task_id='start', dag=dag)
# 创建一个DummyOperator作为任务1和任务2的后置任务
end_operator = DummyOperator(task_id='end', dag=dag)
# 设置任务的依赖关系
start_operator >> [task1_operator, task2_operator]
[task1_operator, task2_operator] >> end_operator
在上面的代码中,我们首先定义了两个并行运行的任务task1
和task2
。然后,我们创建了一个DAG,并设置了默认的起始日期。接下来,我们使用PythonOperator
创建了两个任务的Operator,并指定了任务的ID和对应的Python函数。然后,我们创建了一个DummyOperator
作为任务的前置任务和后置任务。最后,我们使用>>
操作符设置了任务之间的依赖关系,使得任务可以并行运行。
通过这种方式,我们可以在Airflow中实现并行运行任务。