我有3次DAG运行:
在X
的任务实例DAGR 1
中,我想获取任务实例Y
的xcom值。我是这样做的:
kwargs['task_instance'].xcom_pull(task_ids='Y')
我希望从Y
中的任务实例DAGR 1
获得xcom的价值。相反,我来自DAGR 3
。
来自Airflow文档
如果为
xcom_pull
传递了一个字符串task_ids
,则返回该任务的最新XCom值;否则,返回0。 ...
xcom_pull
返回最新的xcom值?答案 0 :(得分:1)
这回答了您的问题[如何从同一DAG运行(不是最新的DAG)中的其他任务实例中提取xcom值? ]
参见下面的示例:
t1 = SomeOperator(
task_id='Your_t1_Task_ID',
...
...
dag=dag)
def get_records(**kwargs):
ti = kwargs['ti']
xcom = ti.xcom_pull(task_ids='Your_t1_Task_ID')
string_to_print = 'Value in xcom is: {}'.format(xcom)
#string_to_print holds that value, you can also print it in the logs
logging.info(string_to_print)
t2 = PythonOperator(
task_id='records',
provide_context=True,
python_callable=get_records,
dag=dag)
t1 >> t2
答案 1 :(得分:0)
xcom_pull()
方法中的include_prior_dates
param Xcom
s的整个历史记录(python
list
,每个项目都是一个xcom
记录)(由task
过滤),然后您必须手动过滤出所需的task_id
使用execution_date
field xcom
进行过滤;为此,请查看他们如何在execution_date
中实现execution_delta
and execution_date_fn
params