web-dev-qa-db-fra.com

Comment configurer Airflow Send Email?

J'ai suivi un didacticiel en ligne pour configurer le serveur SMTP de messagerie dans airflow.cfg comme ci-dessous:

[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]

Et mon DAG est comme ci-dessous:

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

J'ai supposé que l'opérateur de messagerie s'exécutait après les deux autres opérateurs, puis m'envoyait un e-mail. Mais aucun e-mail ne m'a été envoyé. J'apprécie vraiment votre aide. Merci beaucoup.

Meilleur

16
Peter Cui

Configuration du serveur SMTP pour les alertes par e-mail Airflow à l'aide de Gmail :

Créez un identifiant de messagerie à partir duquel vous souhaitez envoyer des alertes en cas d'échec du DAG ou si vous souhaitez utiliser EmailOperator . Éditer airflow.cfg fichier pour modifier les détails smtp du serveur de messagerie.

Pour la démonstration, vous pouvez utiliser n'importe quel compte gmail.

Créez un mot de passe d'application Google pour votre compte Gmail. [Instruction ici] Ceci est fait pour que vous n'utilisiez pas votre mot de passe d'origine ou l'authentification à 2 facteurs.

  1. Visitez votre mots de passe d'application page. Vous pouvez être invité à vous connecter à votre compte Google.
  2. En bas, cliquez sur Sélectionnez l'application et choisissez l'application que vous utilisez.
  3. Cliquez sur Sélectionnez l'appareil et choisissez l'appareil que vous utilisez.
  4. Sélectionnez Générer .
  5. Suivez les instructions pour entrer le mot de passe de l'application (le code à 16 caractères dans la barre jaune) sur votre appareil.
  6. Sélectionnez Terminé .

Une fois que vous avez terminé, vous ne verrez plus ce code de mot de passe d'application. Cependant, vous verrez une liste des applications et des appareils pour lesquels vous avez créé des mots de passe d'application.

Éditer airflow.cfg et modifiez le [smtp] section comme indiqué ci-dessous:

[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

Modifiez les paramètres ci-dessous aux valeurs correspondantes:

YOUR_EMAIL_ADDRESS = Votre adresse Gmail
16_DIGIT_APP_PASSWORD = Le mot de passe de l'application généré ci-dessus

25
kaxil