问题:
我可以在task_id
字符串中使用jinja2字符串语法吗?还是限于f-string
?
示例:
假设我使用BashOperator
,并且在内部分配了params
。我可以在params
中成功使用这些bash_command
,但是一旦在task_id
字符串中使用它们,就会出现以下错误:
airflow.exceptions.AirflowException: The key (my_task_id_string{{ params.paramname1}}{{ params.paramname2}}) has to be made of alphanumeric characters, dashes, dots and underscores
相反,为了减轻这种情况,我改用f字符串,例如:f"my_task_id_string{paramname1}{paramname2}"
答案 0 :(得分:0)
并非BashOperator中的所有参数都是模板化的,同样适用于Airflow中所有可用的运算符。
对于BashOperator,Jinja将以其为模板的字段为bash_command
和env
。
为进一步参考,您始终可以引用任何运算符的源文档字符串,这些字符串将指示该字段是否可模板化。
对于BashOperator,您可以在这里https://airflow.apache.org/docs/stable/_modules/airflow/operators/bash_operator.html