【发布时间】:2018-09-19 15:23:11
【问题描述】:
我们有一个 Luigi 任务,它从凌晨 2 点开始,可以运行任意小时数。我们希望确保如果没有在早上 6 点之前完成,它会自行关闭。有没有办法做到这一点?该任务在 Mesos 上运行,所以我知道我可以运行一个单独的任务或脚本来使用 Mesos 执行程序 HTTP API 并杀死它,但是有没有办法将任务本身编码为在给定时间关闭?
提前致谢。
【问题讨论】:
标签: python python-2.7 luigi
我们有一个 Luigi 任务,它从凌晨 2 点开始,可以运行任意小时数。我们希望确保如果没有在早上 6 点之前完成,它会自行关闭。有没有办法做到这一点?该任务在 Mesos 上运行,所以我知道我可以运行一个单独的任务或脚本来使用 Mesos 执行程序 HTTP API 并杀死它,但是有没有办法将任务本身编码为在给定时间关闭?
提前致谢。
【问题讨论】:
标签: python python-2.7 luigi
为您的任务使用自定义超时。根据docs,您可以将其设置为每个任务的 luigi 级别:
[工人]
超时:
结束运行时间过长的任务所经过的秒数。这为所有任务提供了一个默认值,可以通过在任何任务中设置 worker-timeout 属性来覆盖它。这仅在使用多个工作人员时有效,因为超时是通过杀死工作人员子进程来实现的。默认值为0,表示没有超时。
所以,你的任务应该是这样的:
class MyTask(luigi.Task):
worker_timeout = 60 * 60 * 4 # 4 hours in seconds
# (rest of your task)
# def run():
# do_something()
【讨论】: