Как я мог бы отменить уже выполняющиеся задачи, при повторном нажатии на кнопку?
Код который я набросал, но он конечно же не работает
class TasksManager:
def __init__(self) -> None:
self.state = False
self.lst = [self.task_1, self.task_2, self.task_3]
async def task_1(self):
for i in range(10):
await asyncio.sleep(1)
print("Task 1: ", i)
async def task_2(self):
for i in range(10):
await asyncio.sleep(1)
print("Task 2: ", i)
async def task_3(self):
for i in range(10):
await asyncio.sleep(1)
print("Task 3: ", i)
async def click(self, e: ft.TapEvent):
if not self.state:
self.state = True
lst = [asyncio.create_task(task()) for task in self.lst]
done, pending = await asyncio.wait(lst, return_when=asyncio.FIRST_COMPLETED)
print(done, pending)
else:
# здесь нужно отменить корутины
for task in pending:
task.cancel()
def main(page: ft.Page):
manager = TasksManager()
button = ft.TextButton("Click", on_click=manager.click)
page.add(button)
page.update()
ft.app(main)