【问题标题】:Airflow Dependencies Blocking Task From Getting Scheduled气流依赖性阻止任务被安排
【发布时间】:2020-02-18 11:54:57
【问题描述】:

我有一个气流实例,它运行了 2 个月没有问题,直到周日。我的气流任务所依赖的系统出现停电,一些任务需要排队 2 天。之后,我们决定最好将当天的所有任务都标记为失败并丢失数据。

尽管如此,现在所有新任务都会在适当的时间触发,但它们从未被设置为任何状态(既没有排队也没有运行)。我检查了日志,我看到了这个输出:

依赖项阻止任务被调度

满足所有依赖项,但任务实例未运行。在大多数情况下,这只是意味着任务可能很快就会被安排,除非:

  • 调度程序已关闭或负载过重
  • 以下配置值可能会限制可排队进程的数量:parallelism、dag_concurrency、max_active_dag_runs_per_dag、non_pooled_task_slot_count
  • 此任务实例已运行并手动更改其状态(例如在 UI 中清除)

我觉得第三个主题是它不起作用的原因。 调度程序和网络服务器正在工作,但是我重新启动了调度程序,仍然得到相同的结果。我还为一项作业删除了 mysql 数据库中的数据,但它仍然没有运行。

我还看到一些帖子说它没有运行,因为 depens_on_past 设置为 true,如果之前的运行失败,下一个将永远不会执行。我也查过了,不是我的情况。

任何输入都会非常感激。 有任何想法吗?谢谢

【问题讨论】:

  • 你能找出问题吗??我面临同样的问题,但无法获得解决方案。
  • 玛丽亚,你找到问题了吗??我面临同样的问题,但无法获得解决方案。

标签: airflow airflow-scheduler


【解决方案1】:

在调试类似问题时,我发现此设置:AIRFLOW__SCHEDULER__MAX_DAGRUNS_PER_LOOP_TO_SCHEDULE(或http://airflow.apache.org/docs/apache-airflow/2.0.1/configurations-ref.html#max-dagruns-per-loop-to-schedule),检查气流代码似乎调度程序查询 dagruns 来检查(考虑运行 ti's for),此查询仅限于该数字行数(或默认为 20)。因此,如果您有超过 20 个 dagruns 以某种方式被阻止(在我们的例子中是因为 ti 处于 up-for-retry 状态),那么即使其他 dagruns 可以正常运行,它也不会考虑其他 dagruns。

【讨论】:

    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多