如何指定无毫秒的固定格式AirFlow DAG run_id?
AirFlow指定无毫秒固定格式run_id的方法
AirFlow默认确实没有直接的配置项来统一设置不带毫秒的run_id格式,但可以通过以下两种方式实现需求:
手动触发场景:自定义run_id模板或手动指定
手动触发的run_id带毫秒是因为默认用了当前精确到毫秒的时间,你可以在DAG定义时通过run_id_template参数统一指定格式,强制只保留到秒级。示例代码:from airflow import DAG from datetime import datetime dag = DAG( dag_id="your_target_dag", schedule_interval="@daily", start_date=datetime(2023, 10, 1), # 用执行时间的秒级ISO格式生成run_id run_id_template="{{ execution_date.isoformat(timespec='seconds') }}" )也可以在手动触发DAG时,直接在UI里输入符合
[触发类型]__YYYY-MM-DDTHH:MM:SS+00:00格式的run_id,比如manual__2023-10-24T06:30:16+00:00。全局统一场景:通过钩子或插件修改生成逻辑
调度触发的run_id本来就不带毫秒(用的是整点调度时间),如果要让所有触发类型的run_id都统一无毫秒格式,可以借助AirFlow的钩子机制。比如在AirFlow 2.x中,使用on_dag_run_create钩子,在DAG运行创建后修改run_id,去掉毫秒部分;或者自定义插件重写run_id的生成函数,强制时间格式只保留到秒级。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

