【问题标题】:Why isn't my airflow task being scheduled?为什么没有安排我的气流任务?
【发布时间】:2020-04-17 08:59:02
【问题描述】:

我在一个团队工作,该团队使用大型云提供商之一来托管我们所做的事情。每天早上上班前,我都有一个预定的工作,它在那个云中建立一个开发环境,每天晚上我都有一个预定的工作,它会再次把它拆掉。该开发环境包括 Apache Airflow 的一个实例,而该作业所做的另一件事是运行一个包含一个任务的 Airflow DAG。 我对该 DAG 有一个间歇性问题,DAG 将运行,但有时该任务的任务实例无法安排。今天早上发生了,这里是任务实例详细信息:
在这种情况下:

  • 调度程序正在运行,并且绝对没有处于高负载状态(没有其他东西在运行)
  • 据我所知,它还没有运行

我有一个简单的方法来解决这个问题,我去重新启动气流调度程序(因为我们已经将气流设置为作为 linux 服务运行,这涉及到 ssh 到我们安装了气流的 VM 上并发出 @ 987654331@)。执行此操作后,任务实例将立即开始执行。

正如我所说,这个问题是间歇性的,即我无法确定根本原因,有些早晨一切正常,有时它会像这样卡住。今天早上它卡住了。

我读过Why isn't my task getting scheduled?,其中引起我注意的一件事是:

您的 start_date 设置是否正确?过了 start_date + schedule_interval 后,Airflow 调度器立即触发任务。

我刚刚看了一下任务,它的start_dateNone:

DAG 的 schedule_intervalNone,因为我们不安排这个 DAG,我们手动触发它(这是我早上的工作):

因此,该任务没有 start_date,而 DAG 的 schedule_intervalNone,这可以解释为什么它没有运行,但它没有解释为什么有些日子它确实运行,有些天天没有。

我刚刚重新启动了调度程序服务(如上所述),任务现在正在运行。再次查看任务实例的详细信息,它现在获得了start_date

我不清楚为什么重新启动调度程序会导致任务实例开始运行。谁能建议可能是什么原因?我承认我对start_date不是很了解。

2020 年 4 月 21 日更新:一位同事让我注意到了一个听起来相似的错误(尽管可能不一样):AIRFLOW-1641 - Task gets stuck in queued state。该问题已在气流 1.9 中修复,我们目前正在使用气流 1.8.1,但很快将升级到气流 1.10。

【问题讨论】:

    标签: airflow


    【解决方案1】:

    您是对的,重新启动调度程序不应更改 dag 的开始日期。我想知道您的工作中是否存在最初创建气流实例和 dag 的小逻辑错误。如果你的 dag 有一个开始日期,听起来一切都会好起来的。他们不需要深入研究为什么重新启动调度程序可以让它工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多