Airflow 如何在同一DAG运行(不是最近的一次)中从其他任务实例中提取xcom值?
我有3次DAG跑步:Airflow 如何在同一DAG运行(不是最近的一次)中从其他任务实例中提取xcom值?,airflow,Airflow,我有3次DAG跑步: DAGR 1于2019-02-13 16:00:00执行 DAGR 2于2019-02-13 17:00:00执行 DAGR 3于2019-02-13 18:00:00执行 在dagr1的任务实例X中,我想得到任务实例Y的xcom值。我这样做: kwargs['task_instance'].xcom_pull(task_ids='Y') 我希望在dagr1中从任务实例Y获取xcom的值。相反,我从DAGR 3获得了 来自气流文件 如果xcom\u pull为task\u
dagr1
的任务实例X
中,我想得到任务实例Y
的xcom值。我这样做:
kwargs['task_instance'].xcom_pull(task_ids='Y')
我希望在dagr1
中从任务实例Y
获取xcom的值。相反,我从DAGR 3
获得了
来自气流文件
如果xcom\u pull
为task\u id
传递了单个字符串,则返回该任务的最新xcom值
xcom\u pull
返回最新的xcom值这是您的问题[如何在同一DAG运行(不是最近的一次)中从其他任务实例中提取xcom值]
请参见下面的示例:
t1 = SomeOperator(
task_id='Your_t1_Task_ID',
xcom_push = True,
...
...
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
- 我想您正在寻找一种
方法xcom\u pull()
- 请注意,它将返回给定
推送的任务
s(Xcom
python
,每个项都是一条列表
记录)(由Xcom
过滤)然后,您必须使用任务id
- 可能很难为过滤提供准确的执行日期;为此,请参见如何在
ExternalTaskSensor