在气流中,我们可以将jinja2字符串设置为`task_id`吗?

时间:2019-03-11 14:36:39

标签: jinja2 airflow

问题:

我可以在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}"

1 个答案:

答案 0 :(得分:0)

并非BashOperator中的所有参数都是模板化的,同样适用于Airflow中所有可用的运算符。

对于BashOperator,Jinja将以其为模板的字段为bash_commandenv

为进一步参考,您始终可以引用任何运算符的源文档字符串,这些字符串将指示该字段是否可模板化。

对于BashOperator,您可以在这里https://airflow.apache.org/docs/stable/_modules/airflow/operators/bash_operator.html