Apache Airflow中通过webserver触发DAG时如何指定自定义run id
Airflow Web端触发DAG时自定义run_id的实现方法
Airflow默认的手动触发流程(点击DAG列表的播放按钮)会自动生成格式为manual__时间戳的run_id,2.6版本之前的原生触发弹窗没有暴露自定义run_id的输入入口,可通过以下两种方式实现自定义运行ID的需求:
方法1:构造带参数的触发链接(全版本通用,无额外改动)
Airflow Web端的触发逻辑支持通过URL参数传入触发配置,不需要逐次点击默认触发按钮,可直接按照固定格式拼接访问链接:
- 基础链接格式:
你的Airflow Web服务地址/home?dag_id=目标DAG的唯一标识&run_id=你需要自定义的运行ID - 可选追加参数:如果需要同步指定运行对应的执行时间,可在链接后追加
&execution_date=指定的执行时间,时间格式与Airflow官方要求的格式保持一致即可。
举个实际的访问示例:
如果Airflow部署在http://airflow.internal.company.com,需要触发标识为user_retention_analysis的DAG,自定义run_id为manual_verify_20240520,直接在浏览器访问如下链接:http://airflow.internal.company.com/home?dag_id=user_retention_analysis&run_id=manual_verify_20240520
页面加载完成后会自动弹出触发确认弹窗,确认后生成的DAG运行记录就会使用你指定的run_id,不会生成系统默认的manual__xxx格式ID。
方法2:改造原生触发弹窗(优化交互体验,适合高频自定义场景)
如果觉得每次手动拼接链接的操作繁琐,可以通过Airflow自定义插件能力改造原生触发弹窗,实现和命令行trigger_dag命令一致的交互体验:
- 在Airflow插件目录下编写前端自定义逻辑,在原生Trigger DAG弹窗的表单区域,新增一个命名为
run_id的文本输入字段 - 修改触发请求的提交逻辑,将表单中填写的run_id值作为顶层请求参数传递,不要放在业务conf参数块里
- 重启Webserver服务后,点击DAG列表的原生播放按钮时,就能直接在弹窗里填写自定义run_id完成触发。
注意事项:
- 自定义run_id命名不能包含连续斜杠
//,也不能与同DAG下已存在的运行ID重名,否则会触发运行冲突报错- 不要尝试把run_id放在触发的conf业务参数块里传递,这部分参数只会作为DAG的业务运行变量传递给任务节点,不会被系统识别为DAG run的标识ID。
内容的提问来源于stack exchange,提问作者tribo32
相关产品推荐
相关产品推荐

