Как пропустить ожидание asyncio.sleep(), при этом можно было бы выбирать выполнять ли следующий код или нет

У меня есть следующий код:

import asyncio 

async def test():
 print("Var1")
 await asyncio.sleep(10) #Первый таймер
 print("Var2")

test()
asyncio.sleep(3)
#Прервание таймера 

Там, где написано "Прерывание таймера 1", нужно сделать так, чтобы первый таймер пропустился и не надо было ждать следующие 7 секунд. Но. Мне надо сделать так, чтобы можно было выбирать - выполнять ли дальнейший ход кода или нет. Пожалуйста, помогите сделать такое.


Ответы (1 шт):

Автор решения: eri
import asyncio 

async def test():
  print("Var1")
  await asyncio.sleep(10) #Первый таймер
  print("Var2")

loop = asyncio.get_event_loop()
task = loop.create_task(test())
loop.run_until_complete(asyncio.sleep(3))
task.cancel()

Асинхронные функции должны быть запущенны на цикле событий, чтоб работать. Это добавил в код. Если код уже выполняется синхронно - используйте asyncio.create_task и await вместо run_until_complete

То что Вам нужно - это прерывание таска через метод cancel()

→ Ссылка