Step 2 of 5

luigi.WrapperTask

Но перед тем как начать писать код, я хочу познакомить вас с ещё одной сущностью — WrapperTask. Как следует из его названия, WrapperTask является обёрткой над классическим Task. Его используют, когда возникает необходимость запуска множества независимых друг от друга тасков. Суть в том, что классический Task не подходит для таких задач, т.к. должен содержать Target по которому проверяется статус выполнения (наличие Target), иначе будет возникать ошибка.

Код WrapperTask:

class WrapperTask(Task):
    def complete(self):
        return all(r.complete() for r in flatten(self.requires()))

В теле класса переопределяется метод complete. Этот метод вызывается воркером, когда тот проверяет выполнялся ли таск из цепочки ранее или нет. Как видно из кода, статус выполнения зависит от задач, входящих в WrapperTask в методе requires. Тем самым он как бы делегирует свой статус другим задачам.

Comments