Во-первых, вам нужно проверить, какие версии Composer и Sendgrid вы используете.
Например, последняя версия Sendgrid, поддерживаемая на airflow-1.10.3
, - v5.6.0
. Вы можете обратиться к setup.py воздушного потока, чтобы узнать, какие зависимости установлены для конкретной c версии воздушного потока.
Я рекомендую проверить инструкции для Настройка Sendgrid с облаком Composer еще раз. Убедитесь в нескольких вещах:
- Вы устанавливаете переменные среды, как сказано в руководстве, чтобы настроить Sendgrid в качестве почтового сервера, вам необходимо получить
SENDGRID_API_KEY
(если вы сгенерировали его правильно разрешение? Как минимум, ключ должен иметь Mail send
разрешения на отправку электронной почты) и SENDGRID_MAIL_FROM
(структура правильна? noreply-composer@
) в качестве переменных среды. - В вашем файле
airflow.cfg
проверьте если для переменной email_backend
задано использование Sendgrid:
email_backend = airflow.contrib.utils.sendgrid.send_email
- Попробуйте отправить тестовый DAG, как сказано в руководстве, например, вы можете использовать это:
from airflow import DAG
from airflow.operators.email_operator import EmailOperator
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
default_args = {
'owner': 'name.surname',
'start_date': days_ago(1),
'email_on_failure': True,
'email': ['name.surname@company.com'],
}
dag = DAG(
'mail-test',
schedule_interval='@once',
default_args=default_args,
)
send_mail = EmailOperator(
task_id='sendmail',
to='name.surname@company.com',
subject='TEST Mail from Cloud Composer',
html_content='Mail Contents',
dag=dag,
)
failed_bash = BashOperator(
task_id='run_bash',
bash_command='exit 1',
dag=dag,
)
send_mail >> failed_bash
Кроме того, проверьте спам-фильтр в своем почтовом клиенте. Если это по-прежнему не удается, я начинаю подозревать, что причиной может быть правило брандмауэра (если вы его редактировали).
Дайте мне знать о результатах. Надеюсь, это поможет.