Luigi 没有接下一个要运行的任务,剩下一堆待处理的任务,没有失败的任务

Posted

技术标签:

【中文标题】Luigi 没有接下一个要运行的任务,剩下一堆待处理的任务,没有失败的任务【英文标题】:Luigi not picking up next task to run, bunch of pending tasks left, no failed tasks 【发布时间】:2018-07-12 00:52:10 【问题描述】:

我正在运行一个大型 Luigi 工作流程,该工作流程应该总共运行一百多个任务。工作流程在很长一段时间内运行良好,但在某个阶段,有 15 个待处理任务,所有其他任务都成功完成,没有失败的任务。但是,它似乎不再执行那些待处理的任务。我已经彻底查看了日志,没有错误。从那时起,它只是定期打印以下日志:

There are no more tasks to run at this time
There are 15 pending tasks possibly being run by other workers
There are 15 pending tasks unique to this worker
There are 15 pending tasks last scheduled by this worker

我使用的 luigi 版本是2.6.1。这是一个截图:

知道这里可能会发生什么吗?为什么它会认为没有任务可以运行?这是我的 luigi worker 配置:

[worker]
keep-alive = True
max-reschedules = 3

【问题讨论】:

【参考方案1】:

在我的一位同事的帮助下解决了这个问题。问题在于,在这 15 个待处理任务中,处于最低级别的任务需要一些 CPU 资源(10 个核心)。但是,当我启动我的工作流程时,我没有传递任何 luigi 资源参数。因此,即使有要运行的任务,luigi 也不会因为缺乏资源而将其中的任何一项视为符合运行条件的任务。传递"cpu_cores": 10 的资源参数解决了我的问题。

也可以通过 luigi 的配置文件来完成,如下所示:

[resources]
cpu_cores=10

【讨论】:

【参考方案2】:

如果问题仍然存在,我已经使用了这个。使用下面的代码后,任务执行没有问题。

class TaskName(luigi.Task):
resources = 'max_workers': 1

【讨论】:

以上是关于Luigi 没有接下一个要运行的任务,剩下一堆待处理的任务,没有失败的任务的主要内容,如果未能解决你的问题,请参考以下文章

从 cmd 运行 Luigi 任务 - “没有名为任务的模块”

在运行()中产生任务时Luigi中的TaskClassAmbigiousException

当任务依赖关系过期时,luigi 可以重新运行任务吗?

如何避免在 Luigi 中与多个工作人员同时运行特定任务

让 Airflow 表现得像 Luigi:如果任务的输出只需要获得一次,如何防止任务在 DAG 的未来运行中重新运行?

如何在 Luigi 中启用动态需求?