2

我正在运行一个大型 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
4

2 回答 2

1

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

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

[resources]
cpu_cores=10
于 2018-02-01T19:42:52.883 回答
0

如果问题仍然存在,我已经使用了这个。使用以下代码后,任务将毫无问题地执行。

class TaskName(luigi.Task):
resources = {'max_workers': 1}
于 2022-02-10T15:57:52.863 回答