【问题标题】:on_failure_callback not working in airflow DAG()on_failure_callback 在气流 DAG() 中不起作用
【发布时间】:2021-01-28 09:37:54
【问题描述】:

我想为 dag 失败和成功调用两个不同的函数。为此,我想在 DAG() 函数中使用 on_failure_callback 和 on_success_callback。

根据我的要求,这个回调应该在 dag 级别而不是任务级别。这就是为什么我在声明 dag 变量时写这个回调函数的原因。

但是这个回调函数没有被调用。如果我在任务级别调用相同的功能,那么工作正常。

这是我的代码:

def success():
      print("successful")
    
dag = DAG(dag_id='callback_test',schedule_interval=None,default_args=default_args,on_success_callback=success)
    
    def fun1(**kwargs):
        print("function called")
    
    task1 = PythonOperator(
        task_id='task1',
        provide_context=True,
        python_callable=fun1,
        dag=dag
        )
    
    task1

【问题讨论】:

    标签: airflow


    【解决方案1】:

    但是,我认为它也应该在 DAG 级别上工作,根据这个: https://airflow.apache.org/docs/apache-airflow/1.10.10/_api/airflow/models/dag/index.html?highlight=on_failure_callback

    对吗?

    不过,我无法让它工作:(

    【讨论】:

    • 如果不工作,请报告github.com/apache/airflow/issues 并附上重现示例。最好请针对最新的 Airflow 版本 1.10.10 进行测试是旧版本
    • 我成功了。执行时要小心:on_failure_callback=myfunction 并且在函数中包含任何参数,参数是包含在执行上下文中的参数
    【解决方案2】:

    如果你想传递 agrument,你可以通过创建高阶函数来实现,就像创建装饰器通过外部函数返回实际的回调函数一样。

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多