Но перед тем как начать писать код, я хочу познакомить вас с ещё одной сущностью — 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
. Тем самым он как бы делегирует свой статус другим задачам.