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

Posted

技术标签:

【中文标题】如何避免在 Luigi 中与多个工作人员同时运行特定任务【英文标题】:How to avoid running a specific task simultaneously in Luigi with multiple workers 【发布时间】:2016-01-30 12:23:48 【问题描述】:

我使用 Luigi 构建数据分析任务,包括通过 matplotlib 绘图。

似乎 matplotlib 绘图的并发运行会导致一个问题,这会导致由于某种原因过早地从任务中返回,什么也不做。 (看起来这是 matplotlib 的问题,虽然我可能错了。)

为了解决这个问题,我想避免同时为该绘图任务运行多个工作人员,同时在多个工作人员中运行其他任务。我该怎么做?

【问题讨论】:

【参考方案1】:

您可以为此使用resources。在/etc/luigi/client.cfg 上配置如下资源:

[resources]
mathplotlib: 1

然后,这样修改你的任务:

class MyTask(luigi.Task):
    resources = "mathplotlib": 1

如果您有多台机器运行 luigi worker,并且您希望所有机器中只有一个 worker 使用给定资源,那么您可以查看 this solution。

【讨论】:

以上是关于如何避免在 Luigi 中与多个工作人员同时运行特定任务的主要内容,如果未能解决你的问题,请参考以下文章

在luigi中使用multiprocessing.Queue

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

使用 Luigi 管道时组织文件?

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

如何从 Python Luigi 登录

如何使用 Luigi 处理输出