Airflow 如果分支不聚合,dag中不能运行分支任务吗?
气流图任务分支从未运行,抱怨“任务实例在数据库中不存在”,但可以在图中看到 我有一个气流图,有一个条件分支,定义如下Airflow 如果分支不聚合,dag中不能运行分支任务吗?,airflow,Airflow,气流图任务分支从未运行,抱怨“任务实例在数据库中不存在”,但可以在图中看到 我有一个气流图,有一个条件分支,定义如下 class BranchFlags(枚举): yes=“yes” 否=“否” ... 对于表格列表中的表格,类型列表(dict) task_1=bash运算符( task\u id='task\u 1\u%s'%table[“conf1”], bash_command='bash script1.sh%s'%table[“conf1”], dag=dag) 如果表[“branch
class BranchFlags(枚举):
yes=“yes”
否=“否”
...
对于表格列表中的表格,类型列表(dict)
task_1=bash运算符(
task\u id='task\u 1\u%s'%table[“conf1”],
bash_command='bash script1.sh%s'%table[“conf1”],
dag=dag)
如果表[“branch_flag”]==BranchFlags.yes:
合并运算符(
task\u id='task\u 3\u%s'%table[“conf2”],
bash_command='python%s/consolidate_parquet.py%s'%table[“conf2”],
dag=dag)
task_3=bash运算符(
task_id='task_3'%s'%table[“conf3”],
bash_command='bash script3.sh%s'%table[“conf3”],
dag=dag)
任务1>>任务3
如果表[“branch_flag”]==BranchFlags.yes:
任务1>>任务2
下面是气流UI中的图表,来自我的实际代码:
请注意,即使图中较长的部分运行良好,但单独的分支也不会针对本应进行分支的序列运行。查看任务的日志时,我看到
***数据库中不存在任务实例
这对我来说很奇怪,因为表面上调度器DB看到了任务,因为它确实出现在web UI图中。不确定这里发生了什么,并将其他更改添加到dag.py
文件中,这些更改确实会显示在图形中,并在运行图形时由调度程序执行。试图查看任务实例详细信息会引发错误
任务[dagname.Task_3_qwerty]目前似乎不存在
运行气流重置db
(正如我在其他帖子中看到的那样)对这个问题没有任何帮助
请注意,其目的是短分支与长分支同时运行(而不是作为非此即彼的选择)
有人知道为什么会发生这种情况,或者有一些调试技巧吗?对于气流来说是个新概念,但是想知道较短的分支是否需要连接回下游较长的路径。作为调试说明留在此处,以尝试并报告。不完全确定原因,但似乎与受影响的分支任务使用动态值命名有关,将继续调试。执行两项操作似乎有效:1)不在创建dag之前动态计算的值后命名任务\u id(非常奇怪)2)将短支腿连接回下游较长的支腿。只有在完成这两项操作之后,“prep_file…”和“consolidate”分支才会同时运行(参考文章中的图片)。在写完整答案之前,仍在试图找出原因。如果有人知道会发生什么,请告诉我。