手动DAG运行设置个别任务状态

时间:2018-01-13 18:08:45

标签: airflow apache-airflow

我有一个没有时间表的DAG(根据需要手动运行)。它有很多任务。有时我想通过手动将任务状态更改为SUCCESS来“跳过”一些初始任务。更改手动执行的DAG的任务状态失败,似乎是因为解析execution_date时出现错误。

是否有另一种方法可以为手动执行的DAG单独设置任务状态?

以下示例运行。任务的执行日期是01-13T17:27:13.130427,我相信毫秒没有被正确解析。

回溯

追踪(最近一次通话):   在set_task_instance_state中输入文件“/opt/conda/envs/jumpman_prod/lib/python3.6/site-packages/airflow/www/views.py”,第2372行     execution_date = datetime.strptime(execution_date,'%Y-%m-%d%H:%M:%S')   在_strptime_datetime中输入文件“/opt/conda/envs/jumpman_prod/lib/python3.6/_strptime.py”,第565行     tt,fraction = _strptime(data_string,format)   文件“/opt/conda/envs/jumpman_prod/lib/python3.6/_strptime.py”,第365行,在_strptime中     data_string [found.end():]) ValueError:未转换的数据仍然存在:.130427

2 个答案:

答案 0 :(得分:1)

您可能想要做的是使用分支,顾名思义,它允许您根据某些条件遵循不同的执行路径,就像if一样用任何编程语言。

您可以使用BranchPythonOperator(已记录here)来实现此目标:我们的想法是此运算符由python_callable配置,该函数输出{{1}下一步执行(当然,这应该是直接位于task_id本身下游的任务)。

使用分支会自动将BranchPythonOperator任务设置为正确状态,如文档中所述:

  

所有其他“分支”或直接下游任务都标记为skipped状态,以便这些路径无法向前移动。向下传播skipped个状态以允许填充DAG状态并推断DAG运行状态。

生成的DAG如下所示:

branching

在Apache Airflow官方文档中记录了分支here

答案 1 :(得分:0)

任务实例页面上不起作用,但是您可以在另一个页面上进行操作:
-打开DAG图形视图
-选择所需的运行(屏幕1),然后点击执行
-选择所需的任务
-在弹出窗口中点击标记成功(屏幕2)
-然后确认。

与气流1.9版本相关的PS

屏幕1 screen1

屏幕2 screen 2