Airflow 似乎无法正确使用 Jinja 模板
Ariflow can't seem to use Jinja templating correctly
我一直在努力从 Airflow 1.10.5 升级到 1.10.10,但已经成为问题的一件事是在某些操作员中对一些事情进行模板化。任何涉及使用 jinja 渲染某种字符串的任务都是有问题的。
我有一个调用 python 可调用脚本的运算符:
def custom_s3_function(**kwargs):
task = kwargs['task']
if cadence == '@hourly':
ds = f'{{{{ ts }}}}'
elif cadence =='@daily':
ds = f'{{{{ ds }}}}'
else:
ds = f'{{{{ execution_date - macros.timedelta(seconds={600} + 1) }}}}'
dsTemp = task.render_template('', ds, kwargs)
.......# etc
此时,当我 运行 dag 时,此任务特别在上面的最新行 (dsTemp = task.render_template('', ds, kwargs)
):
上给我一个错误
ERROR - 'dict' object has no attribute 'from_string'
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 983, in _run_raw_task
result = task_copy.execute(context=context)
File "/usr/lib/python3.7/site-packages/airflow/operators/python_operator.py", line 113, in execute
return_value = self.execute_callable()
File "/usr/lib/python3.7/site-packages/airflow/operators/python_operator.py", line 118, in execute_callable
return self.python_callable(*self.op_args, **self.op_kwargs)
File "/usr/lib/python3.7/site-packages/custom_package/airflow/custom_file.py", line 125, in custom_s3_function
dsTemp = task.render_template('', ds, kwargs)
File "/usr/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 752, in render_template
return jinja_env.from_string(content).render(**context)
AttributeError: 'dict' object has no attribute 'from_string'
我有很多运营商都有同样的问题。每当我必须使用 dsTemp = task.render_template('', ds, kwargs)
之类的东西进行渲染时,它就会抛出此错误。升级前从未发生过。显然有很多代码更改我无法在这里完全完成,但我正在努力缩小范围。任何帮助将不胜感激。
发现问题:
dsTemp = task.render_template('', ds, kwargs)
其实应该是
dsTemp = task.render_template(ds, kwargs)
(删除空单引号)。
我想 render_template
一路上发生了变化。
我一直在努力从 Airflow 1.10.5 升级到 1.10.10,但已经成为问题的一件事是在某些操作员中对一些事情进行模板化。任何涉及使用 jinja 渲染某种字符串的任务都是有问题的。
我有一个调用 python 可调用脚本的运算符:
def custom_s3_function(**kwargs):
task = kwargs['task']
if cadence == '@hourly':
ds = f'{{{{ ts }}}}'
elif cadence =='@daily':
ds = f'{{{{ ds }}}}'
else:
ds = f'{{{{ execution_date - macros.timedelta(seconds={600} + 1) }}}}'
dsTemp = task.render_template('', ds, kwargs)
.......# etc
此时,当我 运行 dag 时,此任务特别在上面的最新行 (dsTemp = task.render_template('', ds, kwargs)
):
ERROR - 'dict' object has no attribute 'from_string'
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 983, in _run_raw_task
result = task_copy.execute(context=context)
File "/usr/lib/python3.7/site-packages/airflow/operators/python_operator.py", line 113, in execute
return_value = self.execute_callable()
File "/usr/lib/python3.7/site-packages/airflow/operators/python_operator.py", line 118, in execute_callable
return self.python_callable(*self.op_args, **self.op_kwargs)
File "/usr/lib/python3.7/site-packages/custom_package/airflow/custom_file.py", line 125, in custom_s3_function
dsTemp = task.render_template('', ds, kwargs)
File "/usr/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 752, in render_template
return jinja_env.from_string(content).render(**context)
AttributeError: 'dict' object has no attribute 'from_string'
我有很多运营商都有同样的问题。每当我必须使用 dsTemp = task.render_template('', ds, kwargs)
之类的东西进行渲染时,它就会抛出此错误。升级前从未发生过。显然有很多代码更改我无法在这里完全完成,但我正在努力缩小范围。任何帮助将不胜感激。
发现问题:
dsTemp = task.render_template('', ds, kwargs)
其实应该是
dsTemp = task.render_template(ds, kwargs)
(删除空单引号)。
我想 render_template
一路上发生了变化。