Airflow DAG 中标签(tag)的数量和长度都有一定的限制。标签数量不能超过 16 个,每个标签的长度不能超过 50 个字符。超过这些限制的标签将会被 Airflow 舍弃。
要确保不超过这些限制,可以在 DAG 的构造函数中进行标签数量和长度的检查。如果标签数量或长度超过限制,则抛出异常,提示用户必须更改标签才能成功创建 DAG。
以下是一个示例 DAG 的构造函数,其中添加了标签数量和长度的检查:
from airflow import DAG
from datetime import datetime
class MyDAG(DAG):
def __init__(
self,
dag_id,
schedule_interval=None,
start_date=None,
tags=None,
**kwargs
):
if not tags:
tags = []
if len(tags) > 16:
raise ValueError('Number of tags exceed maximum limit.')
for tag in tags:
if len(tag) > 50:
raise ValueError('Length of tag "{}" exceed maximum limit.'.format(tag))
super().__init__(
dag_id=dag_id,
schedule_interval=schedule_interval,
start_date=start_date or datetime(2021, 1, 1),
tags=tags,
**kwargs
)
在构造 DAG 实例时,可以像这样传递标签列表:
dag = MyDAG(
'my_dag',
schedule_interval='@hourly',
tags=['tag1', 'tag2', 'tag3']
)