Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Airflow 如何在同一DAG运行(不是最近的一次)中从其他任务实例中提取xcom值?_Airflow - Fatal编程技术网

Airflow 如何在同一DAG运行(不是最近的一次)中从其他任务实例中提取xcom值?

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

我有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 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()
      方法
    • 请注意,它将返回给定
      任务
      推送的
      Xcom
      s(
      python
      列表
      ,每个项都是一条
      Xcom
      记录)(由
      任务id
      过滤)然后,您必须使用
    • 可能很难为过滤提供准确的执行日期;为此,请参见如何在
      ExternalTaskSensor