import asyncio loop = asyncio.get_event_loop() coro = asyncio.sleep(0.0) task = asyncio.Task(coro, loop=loop) try: coro2 = asyncio.wait([task], return_when=-1, loop=loop) task2 = asyncio.Task(coro2, loop=loop) # (1) schedule sleep.future.set_result() loop.run_until_complete(task2) except ValueError: pass # (2) cancel sleep.future task.cancel() # (3) call sleep.future.set_result() loop.run_forever()