У нас есть задача Луиджи, которая начинается в 2 часа ночи и может работать в течение произвольного количества часов. Мы хотим убедиться, что если это не будет сделано, скажем, 6 утра, он отключится. Есть какой-либо способ сделать это? Задача выполняется на Mesos, поэтому я знаю, что я могу запустить отдельную задачу или скрипт для использования HTTP-API-исполнителей Mesos и убить его, но есть ли способ закодировать сама задача для выключения в данный момент времени?
Заранее спасибо.
Используйте индивидуальный тайм-аут для своей задачи. Согласно документам вы можете установить его на уровне 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()