Airflow 气流任务已退出,返回代码为1,但未显示任何警告/错误消息

Airflow 气流任务已退出,返回代码为1,但未显示任何警告/错误消息,airflow,Airflow,Apache气流版本:1.10.10 Kubernetes版本(如果您正在使用Kubernetes)(使用kubectl版本):不使用Kubernetes或docker 环境:CentOS Linux 7.7.1908版(核心版)Linux 3.10.0-1062.el7.x8664 Python版本:3.7.6 执行器:本地执行器 发生了什么事 我写了一个简单的dag来清理气流日志。当我使用“airflow test”命令测试它时,一切都正常,我也在WebUI中手动触发它,使用“airflow

Apache气流版本:1.10.10

Kubernetes版本(如果您正在使用Kubernetes)(使用
kubectl版本
):不使用Kubernetes或docker

环境:CentOS Linux 7.7.1908版(核心版)Linux 3.10.0-1062.el7.x8664

Python版本:3.7.6

执行器:本地执行器

发生了什么事

我写了一个简单的dag来清理气流日志。当我使用“airflow test”命令测试它时,一切都正常,我也在WebUI中手动触发它,使用“airflow run”命令启动我的任务,它仍然正常

但在我重新启动服务器并重新启动webserver&scheduler服务(在守护程序模式下)后,每次我触发完全相同的dag时,它仍然像往常一样进行调度,但在启动新进程以运行任务后立即以代码1退出

我还再次使用“airflow test”命令来检查我的代码是否有问题,但使用“airflow test”时一切似乎都正常,但使用“airflow run”时会悄悄退出,这真的很奇怪

以下是在WebUI中手动触发的任务日志(我已将日志级别更改为DEBUG,但仍然找不到任何有用的内容),或者您可以阅读附加的日志文件:

正在读取本地文件:/root/afflow/logs/afflow\u log\u cleanup/log\u cleanup\u worker\u num\u 1/2020-04-29T13:51:44.071744+00:00/1.log [2020-04-29 21:51:53744]{base_task_runner.py:61}调试-计划以用户身份运行 [2020-04-29 21:51:53750]{taskinstance.py:686}调试-依赖项“Previous Dagrun State”已传递:True,任务没有Dependes_on_past set。 [2020-04-29 21:51:53754]{taskinstance.py:686}调试-依赖项“不在重试期”已传递:True,任务实例未标记为重试。 [2020-04-29 21:51:53754]{taskinstance.py:686}调试-已传递依赖项“任务实例状态”:True,排队的任务状态有效。 [2020-04-2921:51:53754]{taskinstance.py:669}INFO-所有依赖项都满足以下条件: [2020-04-29 21:51:53757]{taskinstance.py:686}调试-依赖项“Previous Dagrun State”已传递:True,任务未设置依赖项。 [2020-04-29 21:51:53760]{taskinstance.py:686}调试-依赖项“可用的池插槽”已传递:True,(“在%s中有足够的开放插槽来执行任务”,“默认池”) [2020-04-29 21:51:53766]{taskinstance.py:686}调试-依赖项“不在重试期”已传递:True,任务实例未标记为重试。 [2020-04-29 21:51:53768]{taskinstance.py:686}调试-已传递依赖项“任务并发性”:True,未设置任务并发性。 [2020-04-2921:51:53768]{taskinstance.py:669}INFO-所有依赖项都满足以下条件:

[2020-04-2921:51:53768]{taskinstance.py:879}INFO- [2020-04-2921:51:53768]{taskinstance.py:880}信息-开始尝试第1次,共2次

[2020-04-2921:51:53768]{taskinstance.py:881}信息- [2020-04-29 21:51:53779]{taskinstance.py:900}INFO-在2020-04-29T13:51:44.071744+00:00执行 [2020-04-2921:51:53781]{standard_task_runner.py:53}INFO-启动进程29718以运行任务 [2020-04-29 21:51:53805]{logging_mixin.py:112}INFO-[2020-04-29 21:51:53805]{cli_action_loggers.py:68}调试-调用回调:[] [2020-04-29 21:51:53818]{logging_mixin.py:112}INFO-[2020-04-29 21:51:53817]{cli_action_loggers.py:86}调试-调用回调:[] [2020-04-29 21:51:58759]{logging_mixin.py:112}INFO-[2020-04-29 21:51:58759]{base_job.py:200}DEBUG-[heartbeat] [2020-04-29 21:51:58759]{logging_mixin.py:112}INFO-[2020-04-29 21:51:58759]{local_task_job.py:124}调试-自上次心跳(0.01秒)<心率(5.0秒),睡眠时间4.98824秒 [2020-04-29 21:52:03753]{logging_mixin.py:112}信息-[2020-04-29 21:52:03753]{local_task_job.py:103}信息-任务退出,返回代码为1

如何复制它

我真的不知道如何复制它。因为它突然发生,而且似乎是永久的

还有什么我们需要知道的吗

我试图找出“气流测试”和“气流运行”之间的区别,我想这可能与流程分叉有关吧

我试图解决这个问题,但都失败了:

  • 清除所有dag/dag run/task实例信息,删除/root/afflow下除配置文件之外的所有文件,然后重新启动我的服务

  • 重新启动我的服务器

  • 卸载airflow并重新安装


我终于想出了如何重现这个错误

当您在airflow.cfg中配置电子邮件,并且dag包含电子邮件运算符或使用smtp服务时,如果您的smtp密码包含“^”等字符,则dag的第一个任务将100%退出,返回代码为1,且没有任何错误信息,在我的情况下,第一个任务仅是python运算符

虽然我认为弄乱smtp服务是不好的,但应该有一些合理的提示,事实上我花了整整一周的时间来调试它,我必须重置我的airflow环境中的所有内容,并缓慢地更改配置,以查看此错误何时发生

希望这些信息有帮助