ОК, я посмотрел, как реализован asyncio.sleep
, и оказалось, что он создает внутренний Future
и запускает call_later
.Исходя из этого, я пришел к выводу, что лучшим вариантом будет создать сопрограмму и использовать ее следующим образом:
async def set_timer(seconds):
await asyncio.sleep(seconds)
do_something_important()
timer_task = asyncio.ensure_future(set_timer(10))
timers.append(timer_task)
...
await asyncio.gather(*timers)