气流交叉dag相关性

2024-04-18 04:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图实现两个dag之间的依赖关系:父dag和子dag。 父dag有两个虚拟任务:离开工作,做饭 child dag有三个任务:等待晚餐、吃晚餐、玩食物

wait_for_晚餐使用外部_task_传感器,外部_dag_id作为父_dag,外部_task_id作为cook_晚餐。 两个DAG的开始日期和计划间隔相同

当parent_dag完成后,wait_for_晚餐应该成功退出,下一个任务应该运行,但在我的情况下它不会发生。(如果没有安排DAG,即计划时间间隔=@一次,则工作正常)如果安排了DAG,则等待晚餐将永远处于运行状态。这不是倾听父母的成功

请帮我做这个

代码片段:

家长:

dag = DAG(
    'Parent_dag', 
    default_args=default_args, 
    start_date = convert_to_utc(1606712300), 
    schedule_interval=datetime.timedelta(minutes = 5),
    is_paused_upon_creation = False,
    catchup = False
    )

leave_work = DummyOperator(
    task_id='leave_work',
    dag=dag,
)
cook_dinner = DummyOperator(
    task_id='cook_dinner',
    dag=dag,
)

leave_work >> cook_dinner

孩子:

dag = DAG(
    'Child_dag', 
    default_args=default_args,
    start_date = convert_to_utc(1606712300), 
    schedule_interval=datetime.timedelta(minutes=5),
    is_paused_upon_creation = False,
    catchup = False
    )

wait_for_dinner = ExternalTaskSensor(
    task_id='wait_for_dinner',
    external_dag_id='Parent_dag',
    external_task_id='cook_dinner',
    mode = "reschedule",
    timeout = 3600,
    dag = dag
)

have_dinner = DummyOperator(
    task_id='have_dinner',
    dag=dag,
)
play_with_food = DummyOperator(
    task_id='play_with_food',
    dag=dag,
)

wait_for_dinner >> have_dinner
wait_for_dinner >> play_with_food

Tags: idfalsedefaultfortaskargsworkdag
2条回答

看看Airflow 2.0中TriggerDagRunOperator的新版本,它比以前容易多了。
在这里查看我的视频https://youtu.be/8uKW0mPWmCk

当我想从一个dag开始另一个dag时,我在父dag中使用^{},而不是在子dag中使用ExternalTaskSensorTriggerDagRunOperator更可靠

相关问题 更多 >