【问题标题】:Ariflow can't seem to use Jinja templating correctly气流似乎无法正确使用 Jinja 模板
【发布时间】:2021-03-25 00:28:00
【问题描述】:

我一直在努力从 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) 之类的东西进行渲染时,它都会引发此错误。在升级之前从未发生过。显然有很多代码更改我无法在这里完全完成,但我正在努力缩小范围。任何帮助将不胜感激。

【问题讨论】:

    标签: python jinja2 airflow


    【解决方案1】:

    发现问题:

    dsTemp = task.render_template('', ds, kwargs)  
    

    应该是

    dsTemp = task.render_template(ds, kwargs)  
    

    (删除空单引号)。

    我猜render_template 在途中发生了变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 2022-07-01
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多