Asyncio wait_for 一个函数结束,或者换另一个

Asyncio wait_for one function to end, or for another

我的代码有两个函数:

async def blabla():
    sleep(5)

async def blublu():
    sleep(2)

asyncio.wait_for 据我所知可以等待这样一个函数: asyncio.wait_for(blublu(), timeout=6)asyncio.wait_for(blublu(), timeout=6) 我不想做的是让 asyncio 等待它们两个,如果其中一个结束得更快,则继续进行而不等待第二个。 有可能这样做吗? 编辑:需要超时

asyncio.waitreturn_when 关键字一起使用:

# directly passing coroutine objects in `asyncio.wait` 
# is deprecated since py 3.8+, wrapping into a task
blabla_task = asyncio.create_task(blabla())
blublu_task = asyncio.create_task(blublu())

done, pending = await asyncio.wait(
    {blabla_task, blublu_task},
    return_when=asyncio.FIRST_COMPLETED
)

# do something with the `done` set