Например, у меня есть следующий класс. Как я могу предотвратить выполнение задачи get_entity
, если задача create_entity
не была выполнена?
class MyTaskSequence(TaskSequence):
@seq_task(1)
def create_entity(self):
self.round += 1
with self.client.post('/entities', json={}, catch_response=True) as resp:
if resp.status_code != HTTPStatus.CREATED:
resp.failure()
# how to stop other tasks for that run?
self.entity_id = resp.json()['data']['entity_id']
@seq_task(2)
def get_entity(self):
# It is being always executed,
# but it should not be run if create_entity task failed
resp = self.client.get(f'/entities/{self.entity_id}')
...
Я нашел метод TaskSet.interrupt
в документации, но не позволяет отменить root TaskSet. Я попытался создать родительский TaskSet для своей последовательности задач, поэтому TaskSet.interrupt
работает.
class MyTaskSet(TaskSet):
tasks = {MyTaskSequence: 10}
Но теперь я вижу, что все результаты в интерфейсе очищаются после того, как я позвоню interrupt
!
Мне просто нужно пропустить зависимые задачи в этой последовательности. Мне нужны результаты.