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

时间:2018-11-05 15:53:05

标签: task operator-keyword airflow

我有一个包含60个任务的DAG(PythonsOperators),在某些执行中,不同的任务被标记为失败,但是我不知道原因,当我转到“查看日志”时,该日志为空并且经过时红色方块显示Operator: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
)

2 个答案:

答案 0 :(得分:0)

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

  

如果工人在缓冲区刷新之前死亡,则不会发出日志。没有日志的任务失败表明Airflow工作人员由于内存不足(OOM)而重新启动。   您可以在Task fails without emitting logs处阅读更多内容。

答案 1 :(得分:0)

这发生在我身上。我发现一些工作节点的磁盘空间不足,因此它们由于无法写入日志而导致任务失败。

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

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

  1. 手动删除早于特定日期的日志文件;或
  2. 杀死并重启受影响的 Docker 容器。这就是我们最终要做的。如果这样做,您会丢失所有工作日志。

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

相关问题