【问题标题】:Starting luigi programmatically and not waiting for the job result?以编程方式启动 luigi 而不是等待工作结果?
【发布时间】:2016-10-24 17:17:42
【问题描述】:

所以这个问题可能相当简单。我有一份应该运行约 30 分钟的工作,我不希望我的程序等待 30 分钟才能得到结果。我想获得一个任务名称或 id 或类似的东西并将控制权返回给用户,以便用户以后可以使用我的程序查询进程状态。

https://github.com/spotify/luigi/blob/695010420105dc836096201a00d2f032f0143b84/luigi/interface.py

查看 interface.py 我没有看到任何相关内容。不可能吗?或者我如何实现这一目标?谢谢!

ps。如果有人能指出在哪里寻找任务状态查询 luigi 守护进程,我将不胜感激。

【问题讨论】:

    标签: luigi


    【解决方案1】:

    我在这里看到几个问题:

    1. 如何获取任务名称或 ID:在任务中,您可以使用 self.task_id 获取此内容。您可以在任务的 run 方法中将其写入文件、数据库、队列等。李>
    2. 如何将控制权交还给用户。应该像后台任务一样简单(例如,在 *nix 中使用带有 & 的 luigi 命令或按 ctrl-z 然后在提示符处键入 bg。
    3. 如何获取任务的状态——你可以让它在运行时写出来,但也可以在http://yourluigidhost:8082/api/task_list查看api

    【讨论】:

    • 谢谢,但问题是如何以编程方式,即从 python 中做到这一点?几个问题的原因是因为它们有点相关。在最好的情况下,我想启动一个 luigi.build([task], scheduler_host=bla) 并返回不是完整的调试输出,而只是一个任务 ID 并将其返回给用户。我认为您的回答不可能,但是背景可能吗?我在构建方法中没有看到任何暗示。我的意思是,我可以实现一个队列,但我希望有一种更原生的方式。
    • 是的,我不会使用luigi.build(),我只会从 python 启动命令行进程并让我的 luigi 管道转储顶级任务 ID。我可以看到您可以在哪里分解_schedule_and_run() 方法使用的逻辑build() 使用并编写自己的方法,该方法在调用worker.run() 之前返回工作人员@
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    相关资源
    最近更新 更多