如何在进行更改后重新运行过去的 DAG 运行
How to rerun past DAG runs after making changes
我有一个 Airflow 任务,在过去一年左右的时间里每天 运行s。对 DAG 进行一些更改后,我想根据新代码重新运行——UI 仍然将其检测为已成功 运行 的相同任务,即使它们现在不一样了。
手动去每个 DAG 清除所有 > 运行 似乎违反直觉并且有数百(甚至数千)个 运行s,有没有办法让它们全部 运行又是?
如果有代码更改,Airflow 不会在完成后重置任务实例状态。但是,您可以为任务指定一个新名称,然后将 DAG 运行设置为 运行 状态。
选项 1 - 用户界面
Airflow 可以清除 UI 内的任务状态 - 只需使用“浏览 -> 任务实例”。您可以:
- 为 select 特定任务实例创建过滤器,即通过过滤 task/DAG 名称和时间范围,然后“应用”过滤器
- 然后您可以看到一个 table,其中包含适用于此过滤器的所有任务运行,您可以 select 全部并选择“使用 selected -> 清除”
选项 2 - 命令行
Clear a set of task instance, as if they never ran
For example:
airflow clear -s <start_date> -e <end_date> -t task_to_reset <DAG_NAME>
我有一个 Airflow 任务,在过去一年左右的时间里每天 运行s。对 DAG 进行一些更改后,我想根据新代码重新运行——UI 仍然将其检测为已成功 运行 的相同任务,即使它们现在不一样了。
手动去每个 DAG 清除所有 > 运行 似乎违反直觉并且有数百(甚至数千)个 运行s,有没有办法让它们全部 运行又是?
如果有代码更改,Airflow 不会在完成后重置任务实例状态。但是,您可以为任务指定一个新名称,然后将 DAG 运行设置为 运行 状态。
选项 1 - 用户界面
Airflow 可以清除 UI 内的任务状态 - 只需使用“浏览 -> 任务实例”。您可以:
- 为 select 特定任务实例创建过滤器,即通过过滤 task/DAG 名称和时间范围,然后“应用”过滤器
- 然后您可以看到一个 table,其中包含适用于此过滤器的所有任务运行,您可以 select 全部并选择“使用 selected -> 清除”
选项 2 - 命令行
Clear a set of task instance, as if they never ran For example:
airflow clear -s <start_date> -e <end_date> -t task_to_reset <DAG_NAME>