オンラインチュートリアルに従って、次のようにairflow.cfgにメールSMTPサーバーを設定しました。
[email]
email_backend = airflow.utils.email.send_email_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.gmail.com
smtp_starttls = True
smtp_ssl = False
# Uncomment and set the user/pass settings if you want to use SMTP AUTH
# smtp_user =
# smtp_password =
smtp_port = 587
smtp_mail_from = [email protected]
そして私のDAGは以下の通りです:
from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator
from airflow.operators.email_operator import EmailOperator
def print_hello():
return 'Hello world!'
default_args = {
'owner': 'peter',
'start_date':datetime(2018,8,11),
}
dag = DAG('hello_world', description='Simple tutorial DAG',
schedule_interval='* * * * *',
default_args = default_args, catchup=False)
dummy_operator = DummyOperator(task_id='dummy_task', retries=3, dag=dag)
hello_operator = PythonOperator(task_id='hello_task', python_callable=print_hello, dag=dag)
email = EmailOperator(
task_id='send_email',
to='[email protected]',
subject='Airflow Alert',
html_content=""" <h3>Email Test</h3> """,
dag=dag
)
email >> dummy_operator >> hello_operator
メールオペレーターは他の2つのオペレーターの後に実行され、メールを送信すると想定しました。しかし、メールは送られませんでした。本当にありがとうございました。どうもありがとうございました。
ベスト
Gmailを使用してAirflowメールアラート用にSMTPサーバーを設定する:
DAGの失敗に関するアラートの送信元となるメールID、またはEmailOperatorを使用する場合に、メールIDを作成します。 airflow.cfg
ファイルを編集して、メールサーバーのSMTP詳細を編集します。
デモでは、任意のGmailアカウントを使用できます。
GmailアカウントのGoogleアプリパスワードを作成します。 [こちらの説明]これは、元のパスワードや2要素認証を使用しないようにするためのものです。
完了すると、そのアプリパスワードコードは再び表示されなくなります。ただし、アプリパスワードを作成したアプリとデバイスのリストは表示されます。
airflow.cfg
を編集し、次に示すように[smtp]
セクションを編集します。
[smtp]
smtp_Host = smtp.gmail.com
smtp_starttls = True
smtp_ssl = False
smtp_user = YOUR_EMAIL_ADDRESS
smtp_password = 16_DIGIT_APP_PASSWORD
smtp_port = 587
smtp_mail_from = YOUR_EMAIL_ADDRESS
以下のパラメータを対応する値に編集します。
YOUR_EMAIL_ADDRESS
= Gmailアドレス16_DIGIT_APP_PASSWORD
=上記で生成されたアプリパスワード