【问题标题】:Email on failure/retry with airflow in docker container使用 docker 容器中的气流发送失败/重试电子邮件
【发布时间】:2019-11-06 17:57:51
【问题描述】:

我正在尝试使用此处找到的 LocalExecutor.yml 文件运行 puckel 气流 docker 容器:

https://github.com/puckel/docker-airflow

我无法让气流在失败或重试时向我发送电子邮件。

我尝试了以下方法:

  1. 使用 smtp 主机名编辑配置文件
[smtp]
# If you want airflow to send emails on retries, failure, and you want to use
# the airflow.utils.email.send_email_smtp function, you have to configure an
# smtp server here
smtp_host = smtp@mycompany.com
smtp_starttls = True
smtp_ssl = False
# Uncomment and set the user/pass settings if you want to use SMTP AUTH
# smtp_user = airflow
# smtp_password = airflow
smtp_port = 25
smtp_mail_from = myname@mycompany.com
  1. 在 repo 中包含的 entrypoint.sh 脚本中编辑环境变量:
: "${AIRFLOW__SMTP__SMTP_HOST:="smtp-host"}"
: "${AIRFLOW__SMTP__SMTP_PORT:="25"}"
# Defaults and back-compat
: "${AIRFLOW_HOME:="/usr/local/airflow"}"
: "${AIRFLOW__CORE__FERNET_KEY:=${FERNET_KEY:=$(python -c "from cryptography.fernet import Fernet; FERNET_KEY = Fernet.generate_key().decode(); print(FERNET_KEY)")}}"
: "${AIRFLOW__CORE__EXECUTOR:=${EXECUTOR:-Sequential}Executor}"



export \
  AIRFLOW_HOME \
  AIRFLOW__CELERY__BROKER_URL \
  AIRFLOW__CELERY__RESULT_BACKEND \
  AIRFLOW__CORE__EXECUTOR \
  AIRFLOW__CORE__FERNET_KEY \
  AIRFLOW__CORE__LOAD_EXAMPLES \
  AIRFLOW__CORE__SQL_ALCHEMY_CONN \
  AIRFLOW__SMTP__SMTP_HOST \
  AIRFLOW__SMTP__SMTP_PORT \

if [ "$AIRFLOW__SMTP__SMTP_HOST" != "smtp-host" ]; then
  AIRFLOW__SMTP__SMTP_HOST="smtp-host"
  AIRFLOW__SMTP__SMTP_PORT=25
fi

我目前正在运行一个故意失败的 dag,但我从未收到有关重试或失败的警报。

【问题讨论】:

    标签: docker docker-compose smtp airflow


    【解决方案1】:

    您不需要执行步骤 1 和 2。在 docker-compose.yml 中指定环境变量。 此外,请确保您已在 Operator 中启用失败时发送电子邮件, 喜欢这里:https://gist.githubusercontent.com/aawgit/0753b3ef1d715257e442ceafbc8583d3/raw/fa45caa9150e08654d476c2d619ab50615942b46/email-notification-on-task-failure.py

    【讨论】:

      【解决方案2】:

      设置以下变量以使邮件功能正常工作。 这取决于 SMTP 邮件服务器的配置。 用户名和密码要正确设置。

      • 如果使用 docker-compose,在 docker-compose.yml 中设置以下变量将自动更新气流变量:
      - AIRFLOW__SMTP__SMTP_HOST=smtp_host
      - AIRFLOW__SMTP__SMTP_PORT=25_?_the_smtp_port_used_smtp_host
      - AIRFLOW__SMTP__SMTP_USER=mail_user_name_of_your_app
      - AIRFLOW__SMTP__SMTP_PASSWORD=mail_user_password_of_your_app
      - AIRFLOW__SMTP__SMTP_MAIL_FROM=mail_user_name_of_your_app@mail.server.name
      
      • 同样,如果手动调出 docker,将以下变量设置为环境变量:
      AIRFLOW__SMTP__SMTP_HOST=smtp_host
      AIRFLOW__SMTP__SMTP_PORT=25_?_the_smtp_port_used_smtp_host
      AIRFLOW__SMTP__SMTP_USER=mail_user_name_of_your_app
      AIRFLOW__SMTP__SMTP_PASSWORD=mail_user_password_of_your_app
      AIRFLOW__SMTP__SMTP_MAIL_FROM=mail_user_name_of_your_app@mail.server.name
      
      export AIRFLOW__SMTP__SMTP_HOST AIRFLOW__SMTP__SMTP_PORT AIRFLOW__SMTP__SMTP_USER AIRFLOW__SMTP__SMTP_PASSWORD AIRFLOW__SMTP__SMTP_MAIL_FROM
      
      # Then bring up docker:
      docker run your_docker...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-10
        • 2022-08-20
        • 2017-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-07
        • 2020-12-03
        相关资源
        最近更新 更多