气流在PythonOperator上用None替换单引号



在开发一些关于气流的代码时,我看到当传递给python_callable时,所有的PythonOperator任务参数"(单引号)都被替换为None。

要复制,使用以下函数(将是python_callable)

def print_something(something):
print('Something: ', something)

然后,下面的DAG和Task:

with DAG(
dag_id='print_test',
tags=['Test'],
start_date=days_ago(1),
schedule_interval=None,
default_args={'owner': 'rand'},
catchup=False,
render_template_as_native_obj=True,
) as dag:
print_task = PythonOperator(
task_id=f'task_print_test',
dag=dag,
python_callable=print_something,
op_kwargs={'something': {'test':''}}
)
print_task

查看任务执行日志:

[2022-07-13, 12:04:14 -03] {logging_mixin.py:115} INFO - Something:  {'test': None}

气流是替换单引号没有价值。

有什么方法可以防止这种情况吗?

是的,有。删除此dag配置:

render_template_as_native_obj=True

它导致你的dag用python对象替换某些东西(参数和其他)。