气流默认为on_failure_callback

时间:2017-07-25 19:57:41

标签: python operators airflow apache-airflow

在我的DAG文件中,我定义了一个on_failure_callback()函数,以便在发生故障时发布Slack。

如果我为DAG中的每个运算符指定它,效果很好:on_failure_callback = on_failure_callback()

有没有办法自动化(例如通过default_args,或通过我的DAG对象)调度到我的所有运营商?

1 个答案:

答案 0 :(得分:19)

我终于找到了办法。

您可以将on_failure_callback作为default_args

传递
class Foo:
  @staticmethod
  def get_default_args():
      """
      Return default args
      :return: default_args
      """

      default_args = {
          'on_failure_callback': Foo.on_failure_callback
      }

      return default_args

  @staticmethod
  def on_failure_callback(context):
     """
     Define the callback to post on Slack if a failure is detected in the Workflow
     :return: operator.execute
     """

     operator = SlackAPIPostOperator(
         task_id='failure',
         text=str(context['task_instance']),
         token=Variable.get("slack_access_token"),
         channel=Variable.get("slack_channel")
     )

     return operator.execute(context=context)