當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python asyncio.wait_for用法及代碼示例


用法:

coroutine asyncio.wait_for(aw, timeout)

等待 aw awaitable 以超時完成。

如果aw 是協程,它會自動安排為任務。

timeout 可以是 None 或浮點數或 int 等待的秒數。如果 timeoutNone ,則阻塞直到未來完成。

如果發生超時,它會取消任務並引發 asyncio.TimeoutError

要避免任務 cancellation ,請將其包裝在 shield() 中。

該函數會一直等到 future 被實際取消,所以總的等待時間可能會超過 timeout 。如果在取消期間發生異常,則會傳播該異常。

如果等待被取消,未來的aw也被取消。

在 3.10 版中更改:刪除了loop範圍。

例子:

async def eternity():
    # Sleep for one hour
    await asyncio.sleep(3600)
    print('yay!')

async def main():
    # Wait for at most 1 second
    try:
        await asyncio.wait_for(eternity(), timeout=1.0)
    except asyncio.TimeoutError:
        print('timeout!')

asyncio.run(main())

# Expected output:
#
#     timeout!

在 3.7 版中更改:什麽時候aw由於超時而取消,wait_for等待aw被取消。此前,它提出了asyncio.TimeoutError立即地。

在 3.10 版中更改:刪除了loop範圍。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 asyncio.wait_for。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。