我们有一个Luigi任务,该任务从凌晨2点开始,可以运行任意小时。我们要确保,如果未在上午6点之前完成,则会自行关闭。有什么办法吗?该任务在Mesos上运行,所以我知道我可以运行一个单独的任务或脚本来使用Mesos executor HTTP API并杀死它,但是有没有办法对任务本身进行编码以在给定时间关闭?
谢谢。
答案 0 :(得分:0)
为任务使用自定义超时。根据{{3}},您可以将其设置为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()