气流任务失败,没有空日志,不发送电子邮件



我有一个DAG,里面有60个任务(PythonsOperators(,在某些执行中,不同的任务被标记为失败,但我不知道原因,当我转到"查看日志"时,日志是空的,当我经过红方时,它说Operators:null,这意味着什么?

它似乎还没有执行任务,但我不明白为什么。

问题是:

为什么Airflow将其标记为失败,但日志中没有显示执行?如果任务被标记为失败,为什么它不发送错误的电子邮件?

以下是与dag:相关的python代码

DEFAULT_ARGS = {
'owner': 'blablabla',
'depends_on_past': False,
'start_date': datetime(2018, 5, 8),
'catchup': False,
'email': ['mail@mail.com'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 3,
'max_active_runs': 1,
'retry_delay': timedelta(minutes=5)
}
dag = DAG('dag_name',
default_args=DEFAULT_ARGS,
schedule_interval='20 0 * * *')
mylist = get_codes_list()
for item in mylist:
healthcheckerName = 'healthchecker_' + item
healthchecker = PythonOperator(
dag=dag,
task_id=healthcheckerName,
python_callable=prime_ops.check_last_budget_calculation(item),
queue=SPECIFIC_QUEUE,
pool=DEFAULT_PPC_POOL
)

工人可能会死亡。我建议增加内存分配。

如果工作进程在缓冲区刷新之前死亡,则不会发出日志。没有日志的任务失败表明Airflow工作程序由于内存不足(OOM(而重新启动。你可以在这里阅读更多任务失败而不发送日志。

我遇到了这种情况。我发现一些工作节点的磁盘空间不足,所以它们无法写入日志,导致任务失败。

进入worker节点的Docker容器,并在logs/worker.log中搜索";设备上没有剩余空间";。

如果是这种情况,有两种简单的方法可以缓解:

  1. 手动删除超过某个日期的日志文件;或
  2. 杀死并重新启动受影响的Docker容器。这就是我们最终所做的。如果你这样做,你会丢失所有的工人日志

从长远来看,进行日志轮换或自动清理日志文件(最旧的先清理(可能是值得的。

相关内容

  • 没有找到相关文章

最新更新