在开发一些关于气流的代码时,我看到当传递给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对象替换某些东西(参数和其他)。