我使用的是Apache airflow,我想将消息发送到多个渠道,我想知道什么是最佳解决方案。 我有我的剧本:
t_success_notification = SlackAPIPostOperator(
task_id = 'success-notification'
, trigger_rule = 'all_success'
, channel = '#channel1'
, token = ...
, text = "success"
, dag = dag)
t_success_notification.set_upstream(task1)
那么我该怎么做才能将通知也发送到#channel2。我可以像这样在昏迷后列出频道吗?
...
, channel = '#channel1,#channel2,#channel3'
...
有人知道怎么做吗?问候
答案 0 :(得分:1)
另一种设置方法是使用Slack集成来获取频道的电子邮件地址: https://astronomerteam.slack.com/apps/A0F81496D-email
这为我们提供了与频道关联的电子邮件地址。然后,我们只需将此电子邮件地址放在email
参数中以获取DAG。这样一来,我们就不必为任何Slack频道通知使用单独的运算符,并且可以轻松地将警报发送到多个频道(成功,重试,失败等)。
答案 1 :(得分:0)
不幸的是,您无法使用易于使用的SlackPostOperator来做到这一点。如果您查看SlackPostOperator:https://airflow.apache.org/_modules/slack_operator.html的代码,它将使用SlackAPI:https://github.com/slackapi/python-slackclient的代码,并且从文档中可以看到它并没有采用多个通道作为参数。
正如另一位发帖人所述,一个好的解决方案是为每个闲置频道创建电子邮件别名,然后可以将这些电子邮件添加到“默认Args”部分的电子邮件设置中。即: “电子邮件”:[“ channel1_integration@slack.com”, “ channel2_integration@slack.com”], “ email_on_failure”:错误,