【问题标题】:Can Luigi handle parallel runs of the same pipeline?Luigi 可以处理同一管道的并行运行吗?
【发布时间】:2017-07-10 23:29:34
【问题描述】:

用户向我们发送订单。收到订单后,我们运行一个由运行多个任务组成的管道。有些任务需要几天的计算机时间。

# Example pipeline
order -> task1 -> task2 -> task3 -> Complete

我想开始处理每个订单,因此我们的计算集群将同时处理多个订单及其相关的管道运行

# Diagram showing each order arriving then being processed over time.

|  order1 -> t1 -> t2 -> t3 -> complete
|             order2 -> t1 -> t2 -> t3 -> complete
|                        order3 -> t1 -> t2 -> t3 -> complete
|                        order4 -> t1 -> t2 -> t3 -> complete
|                                                order5 -> t1 -> t
------------------------------------------------------------------
 time 

你能在 Luigi 中做到这一点吗?

我不认为你可以像我实现一个测试管道,然后尝试启动测试管道的另一个实例,而第一个正在运行时,我从第二个管道实例得到以下输出。

Pid(s) set([11004]) already running

Process finished with exit code 0

【问题讨论】:

    标签: python parallel-processing pipeline luigi


    【解决方案1】:

    只要参数不同,Tasks就会有不同的id,可以同时运行。如果您尝试使用相同的参数运行任务,以便 id 生成函数生成相同的 id,它将认为它已经在运行。如果生成的 id 不同,你肯定可以运行多个相同的任务。

    以下是任务 ID 生成方法: https://github.com/spotify/luigi/blob/master/luigi/task.py#L118

    【讨论】:

    • 感谢您的回复,我已经用代码和一个工作示例提出了一个新的类似问题。您知道为什么第二次尝试使用不同的任务 ID 运行管道不起作用吗? stackoverflow.com/questions/45034961/…
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多