气流 <> 松弛
Airflow <> Slack
我刚开始学习 Airflow,我正在尝试创建一个小的 Airflow 脚本来向 Slack 发送通知,但不知何故它无法调用 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)
无法在线找到任何解决方案。松弛身份验证有问题吗?
已解决。我试图 post 在一个私人的松弛频道。使用 public one
效果很好
我认为您可以先邀请您的 Airflow 机器人进入您的私人频道,然后 slack 机器人可以 post 在该频道中发送消息。否则 slack 机器人找不到私人频道,它会引发 not_in_channel
Slack API 错误。
使用 public 松弛通道,您不需要这样做,您将收到来自 Airflow 机器人的消息。
希望对您有所帮助。
我刚开始学习 Airflow,我正在尝试创建一个小的 Airflow 脚本来向 Slack 发送通知,但不知何故它无法调用 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)
无法在线找到任何解决方案。松弛身份验证有问题吗?
已解决。我试图 post 在一个私人的松弛频道。使用 public one
效果很好我认为您可以先邀请您的 Airflow 机器人进入您的私人频道,然后 slack 机器人可以 post 在该频道中发送消息。否则 slack 机器人找不到私人频道,它会引发 not_in_channel
Slack API 错误。
使用 public 松弛通道,您不需要这样做,您将收到来自 Airflow 机器人的消息。
希望对您有所帮助。