【发布时间】:2020-01-02 10:17:55
【问题描述】:
我有一个包含多个 luigi 任务的应用程序(我没有编写那个应用程序)。现在我想介绍另一个任务,在一个进程的中间,它将监控一些 AWS 实例。该任务一旦开始,应该一直运行到结束,并且它必须与其他任务并行运行。您可以在链接中查看图片以便更好地理解。 Link to the schema 我查看了文档,但找不到解决方案。我是 luigi 的新手,我可能错过了一些东西。
【问题讨论】:
我有一个包含多个 luigi 任务的应用程序(我没有编写那个应用程序)。现在我想介绍另一个任务,在一个进程的中间,它将监控一些 AWS 实例。该任务一旦开始,应该一直运行到结束,并且它必须与其他任务并行运行。您可以在链接中查看图片以便更好地理解。 Link to the schema 我查看了文档,但找不到解决方案。我是 luigi 的新手,我可能错过了一些东西。
【问题讨论】:
我不认为你错过了什么。我不认为 luigi 涵盖了那个用例。但是,您可以做的一件事是让任务 3 只需要任务 2,让任务 4 需要任务 2 而不是任务 3,并让任务 3 持续运行一些代码并监视任务 5 的输出以了解它应该何时关闭。这不是最漂亮的,但应该可以。
但是,我可以预见到一些问题(这就是 luigi 可能不支持它的原因)。如果您有足够的任务 3 正在运行,您可能永远无法完成工作流,因为任务 4 永远不会运行。这就是为什么不建议这样做的原因,因为您实际上是在创建依赖图不知道的隐藏需求。另一个问题是,在您完成所有任务 5 之前,任务 3 可能永远不会运行,在这种情况下,它是无用的。
我的最后一个想法是,在任务 2 结束或任务 4 开始时,您根本不需要任务 3,而是在调度程序节点上启动一个进程(简单地使用 luigi.Task 而不是扩展来使工作在集群上的另一个节点上运行)。然后在任务 5 结束时删除该进程。不过,您还需要考虑其他一些边缘情况,以确保流程不会运行得太短或太长。
祝你好运!
【讨论】: