airflow sample to pass metadata to task. -----XCOM
1. At first, let us take a look at one sample which one we do not need to pass the metadata
import random from datetime import datetime, timedelta from airflow.utils.dates import days_ago from airflow.operators.python import PythonOperator from airflow import DAG default_args = { 'owner': 'Jasmine Qian', 'start_date': days_ago(0), 'email': ['jasmine.qian@liveramp.com'], 'retries': 0, 'retry_delay': timedelta(minutes=2), } dag = DAG( 'Pass_Metadata', default_args=default_args, tags=['meta', 'params'], schedule_interval=None, catchup=False, ) def run_this_fun(**context): print("Hi") def check_state(**context): if random.random() > 0.7: raise Exception('Exception') print("I am OK") run_this_task1 = PythonOperator( task_id="run_this", python_callable=check_state, provide_context=True, dag=dag, ) run_this_task2 = PythonOperator( task_id="run_this2", python_callable=run_this_fun, provide_context=True, dag=dag, ) run_this_task1 >> run_this_task2 # run_this_task2 if __name__ == "__main__": dag.cli()
2. how about task1 passing any metadata to task2?
import random from datetime import datetime, timedelta from airflow.utils.dates import days_ago from airflow.operators.python import PythonOperator from airflow import DAG default_args = { 'owner': 'Jasmine Qian', 'start_date': days_ago(0), 'email': ['jasmine.qian@liveramp.com'], 'retries': 0, 'retry_delay': timedelta(minutes=2), } dag = DAG( 'Pass_Metadata_v2', default_args=default_args, tags=['meta', 'params'], schedule_interval=None, catchup=False, ) def run_this_fun(**context): received_value = context['ti'].xcom_pull(key='random_value') print("Hi, I received the value {}".format(str(received_value))) def push_to_xcom(**context): random_value = random.random() context['ti'].xcom_push(key='random_value', value=random_value) print("I am OK") run_this_task1 = PythonOperator( task_id="run_this", python_callable=push_to_xcom, provide_context=True, dag=dag, ) run_this_task2 = PythonOperator( task_id="run_this2", python_callable=run_this_fun, provide_context=True, dag=dag, ) run_this_task1 >> run_this_task2 # run_this_task2 if __name__ == "__main__": dag.cli()

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架