python - 在 Airflow 上,连接到 SMTP 主机时连接被拒绝
问题描述
按照下面文章中解释的类似内容通过 Airflow 中的 SMTP 服务器发送电子邮件: https ://towardsdatascience.com/automating-emails-in-apache-airflow-a-how-to-guide-1d2330a29d1e
我没有像在我们的生产环境中那样使用默认的airflow.cfg 来配置smtp 主机,我们无法控制它。但在产品中,似乎 Airflow 无法连接到 SMTP 主机,而我可以在本地运行相同的代码并获取电子邮件。错误如下:
我们还通过 prod 服务器上的独立 python 脚本检查了我们能够访问 SMTP 主机,所以这不是主机的问题,而是 Airflow 的问题。
对此有何建议?
解决方案
好吧,我们发现这是从生产机器连接到远程 SMTP 服务器的问题,可能是由于客户端和服务器之间的防火墙。我们通过在这些 prod 框中运行 python 脚本来确认它,并且在连接时它在以下行失败:
server = smtplib.SMTP(smtp_server)
server.sendmail(sender_email, receiver_email, message.as_string())
错误:ConnectionRefusedError:[Errno 111] 连接被拒绝
为之前的困惑道歉。
早些时候我们尝试通过 sendmail unix 命令,它工作了,所以混乱:
sendmail email_address -s smtp_server
Subject: Test mail from prod_env
Hello, email received
所以这不是 Airflow 的问题,而只是从 prod 服务器连接到 smtp 服务器。谢谢。
推荐阅读
- bash - 如何使用 bash 脚本解压目录中的每种类型的 tar 文件?
- javascript - 如何使用 Javascript 使 css 偏移更平滑?
- neo4j - 创建具有相同关系的重复节点
- typescript - 为 VSCode 扩展创建日志文件
- python - 当我为所有值获取“nan”时如何使用 & 或和操作来获取正确的数据
- python - 将用户重定向到子
- php - 在我的路线中添加参数时显示视图的问题 - Laravel
- javascript - Typescript 对象的构造函数中 Object.assign() 的目的是什么?
- sql - 无法使用 .each 块和 sqlite3 计算排除当前观察的平均值
- azure-resource-manager - 如何使用“contentFormat”:“swagger-json”将 swagger 从 Arm 模板部署到 Azure API 管理