Airflow 与XCOM和BASH运算符的气流相关性

Airflow 与XCOM和BASH运算符的气流相关性,airflow,apache-airflow-xcom,Airflow,Apache Airflow Xcom,然而,这并不能正常工作,我应该承认这是我第一次使用python。任何帮助都是非常有用的。我已经建立了一个测试DAG来执行以下操作,但它不起作用: 运行任务t1并返回一个值 如果1中的值为“全部成功”,则运行任务t2 从日期时间导入日期时间 从airflow.models导入DAG 从afflow.operators.bash_operator导入bash operator def set U触发器(taskid,**kwargs): xcomValue={{task\u instance.x

然而,这并不能正常工作,我应该承认这是我第一次使用python。任何帮助都是非常有用的。我已经建立了一个测试DAG来执行以下操作,但它不起作用:

  • 运行任务t1并返回一个值
  • 如果1中的值为“全部成功”,则运行任务t2
从日期时间导入日期时间
从airflow.models导入DAG
从afflow.operators.bash_operator导入bash operator
def set U触发器(taskid,**kwargs):
xcomValue={{task\u instance.xcom\u pull(task\u id=taskid)}

打印(xcomValue,“为什么不使用
BranchPythonOperator
():

这样,只有在t1返回的值为
0

从日期时间导入日期时间
从airflow.models导入DAG
从afflow.operators.bash_operator导入bash operator
def set_触发器(任务ID,**kwargs):
xcomValue={{task\u instance.xcom\u pull(task\u id=taskid)}

打印太长了,读不下去了,在读的时候,需要知道为什么你做的是错误的/不可能的。在DAG解析时间,TL;DR <代码> TrutGryRead < /Cord>输入,但是模板如<代码> {{TaskYuff.xCCOMLAPH(TaskJiDs=TaskID)}。
不是在分析/生成DAG时具体化,而是在运行DAG时具体化(DAG->DagRun,Task->TaskInstance)@y2k shubham我真正想要的是确保在t1返回特定值时跳过t2…气流可以实现这种自定义依赖吗?@y2k shubham谢谢,我想我理解为什么不可能使用触发器…是我实现气流这种自定义依赖的另一种方法吗?好的,所以基本上你需要在另一个任务中检索任务的
状态
;检查并
    from datetime import datetime
    from airflow.models import DAG
    from airflow.operators.bash_operator import BashOperator

    def set_trigger(taskid, **kwargs):
        xcomValue = {{ task_instance.xcom_pull(task_ids=taskid) }}
        print( xcomValue, " <------- LOOK HERE XCOM VAR")
       if(xcomValue == "0"):
          return TriggerRule.ALL_SUCCESS
       return TriggerRule.ALL_FAILED 

    dag = DAG(dag_id="example_bash_operator", schedule_interval=None, start_date=datetime(2018, 12, 31) ) as dag:

    t1 = BashOperator(
        task_id="t1",
        bash_command='do something && echo 0 ',
        dag=dag
    )

    t2 = BashOperator(
          task_id="t2",
          bash_command='do something else here ',
         trigger_rule=set_trigger,
         dag=dag,
    )

    t1 >> t2
    ```