在SSHOperator任务中获取xcom值时,应使用decode方法将字节串转换为字符串。例如:
from airflow.contrib.operators.ssh_operator import SSHOperator
def run_command(**kwargs): ssh_operator = SSHOperator( task_id='run_command', ssh_conn_id='my_ssh_connection', command='echo "Hello, SSH!"', do_xcom_push=True, dag=kwargs['dag'] ) result = ssh_operator.execute(context=kwargs) result_str = result.decode('utf-8') # 将字节串转换为字符串 return result_str
t1 = PythonOperator( task_id='ssh_task', python_callable=run_command, dag=dag )
t2 = BashOperator( task_id='echo_task', bash_command='echo {{ ti.xcom_pull(task_ids="ssh_task") }}', dag=dag, )
t1 >> t2
这样,当SSHOperator任务成功执行并将结果推入xcom时,BashOperator任务便可以正常获取并使用返回的字符串值。