气流<>松弛

时间:2018-03-13 12:47:48

标签: slack-api airflow

我刚刚开始学习Airflow,我正在尝试创建一个小气流脚本来发送通知,但不知何故它无法调用Slack API。第一项任务很好。这是我使用的代码:

from airflow import DAG
from airflow.contrib.operators.bigquery_check_operator import BigQueryCheckOperator
from airflow.operators import BashOperator
from slackclient import SlackClient
from airflow.operators.slack_operator import SlackAPIPostOperator
from datetime import datetime, timedelta

default_args = {
    'owner': 'test',
    'depends_on_past': False,
    'start_date': datetime.today(),
    'email': ['test@test'],
    'email_on_failure': True,
    'email_on_retry': False,
    'retries': 4,
    'retry_delay': timedelta(minutes=5),
}

# Create the DAG
dag = DAG('slack_test',\
    default_args=default_args,\
    schedule_interval='15 * * * *')

final_check = BigQueryCheckOperator(
    task_id='bq_check_agg',
    sql='''
    #legacy sql
    SELECT
    max(date) as max_date
    FROM
    [test:test.test]
    WHERE date <= current_timestamp()
    ''',
    dag = dag)

    # slack notification
slack_notify = SlackAPIPostOperator(
    task_id='slack_notify',
    username  = 'Airflow',
    token='....',
    channel='#test-channel',
    text='ETL DONE!',
    dag=dag
)
slack_notify.set_upstream(final_check)

当我尝试测试slack_notify任务时,它失败了。这是我收到的错误:

airflow.exceptions.AirflowException: Slack API call failed (%s)

无法在线找到任何解决方案。松弛认证有问题吗?

2 个答案:

答案 0 :(得分:0)

解决。我试图在私人闲聊频道发帖。与公众合作

答案 1 :(得分:0)

我认为您可以先邀请您的Airflow机器人进入您的私人频道,然后您的Airflow机器人可以在该频道中发布消息。否则,Slackbot无法找到私有频道,它将弹出Slack API错误not_in_channel

使用公共备用频道,您无需这样做,您将收到来自Airflow机器人的消息。

希望有帮助。