在Airflow的PythonOperator中,当使用一个含有单引号的字符串作为参数时,Airflow会将其中的单引号自动替换为None,导致出错。为了避免这种问题,可以在Airflow中使用双引号代替单引号。
例如,如果你有以下的PythonOperator任务:
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
def print_message(message):
print(message)
with DAG('my_dag') as dag:
my_task = PythonOperator(
task_id='my_task',
python_callable=print_message,
op_kwargs={'message': 'This is a message with a single quote: \'example\''}
)
运行这个任务会得到一个错误:
TypeError: argument of type 'NoneType' is not iterable
为了修正这个问题,可以将参数字符串中的单引号改为双引号。例如:
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
def print_message(message):
print(message)
with DAG('my_dag') as dag:
my_task = PythonOperator(
task_id='my_task',
python_callable=print_message,
op_kwargs={'message': "This is a message with a single quote: 'example'"}
)
这样就可以成功运行任务了。