Подскажите пожалуйста как переделать метод start. Чтобы он выполнялся в фоне, и когда вызывался asyncio.sleep, засыпала не вся ветка кода что вызвала её, а метод start возвращала управление обратно, чтобы create_timer и func продолжила выполнение. А когда asyncio.sleep закончится, функция start продолжила выполнение и выполнилось в фоне.
Проблема в том, что метод start блокирует всю ветку куда что его вызвала, вместо выполнения в фоне.
Это примерный неполный кусок кода для наглядности:
...
class ClassName():
async def func(self):
...
await timer_manager.create_timer(args...)
...
class TimerManager():
_timers = {}
time = 0
def __init__(self, time):
self.time = time
async def create_timer(self, args...):
self._timers[args...] = Timer(self.time, args...)
await self._timers[args...].start()
async def delete_timer(self, args...):
try:
...
self._timers.pop(args...)
except:
pass
class Timer():
time = 0
...
def __init__(self, time, args...):
self.time = time
...
async def start(self):
await asyncio.sleep(self.time)
...
...
timer_manager = TimerManager(args...)
...