我有一个具有多个luigi任务的应用程序(我没有编写该应用程序)。现在,我想在流程的中间引入另一个任务,该任务将监视一些AWS实例。该任务一旦开始,就应运行到最后,并且必须与其他任务并行运行。您可以在链接中看到图片,以更好地理解。 Link to the schema 我查看了文档,但找不到解决方案。我是luigi的新手,我可能错过了一些东西。
答案 0 :(得分:0)
我认为您没有错过任何事情。我认为luigi不会涵盖该用例。但是,您可以做的一件事是让任务3仅需要任务2,让任务4需要任务2而不是任务3,并让任务3连续运行一些代码并监视任务5的输出以了解何时应该关闭它。它不是最漂亮,但应该可以。
但是,我可以预见一些问题(这就是为什么luigi不支持它的原因)。如果您有足够的任务3在运行,则可能永远无法完成工作流程,因为任务4将永远不会运行。这就是为什么不建议这样做的原因,因为您实际上是在创建依赖关系图不知道的隐藏需求。另一个问题是,除非您完成所有任务5的任务,否则任务3可能永远不会运行,在这种情况下,它是无用的。
我的最后一个想法是,在任务2的末尾或任务4的开始处,根本没有任务3,而是在调度程序节点上启动了一个进程(仅使用luigi.Task而不是扩展名即可使工作在群集上的另一个节点上运行)。然后在任务5的末尾删除该过程。不过,您还需要考虑其他一些极端情况,以确保该过程不会运行得太短或太长。
祝你好运!