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


Python asyncio.shield用法及代碼示例


用法:

awaitable asyncio.shield(aw)

保護等待對象不成為 cancelled

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

該聲明:

res = await shield(something())

相當於:

res = await something()

except,如果包含它的協程被取消,在something()中運行的任務不會被取消。從 something() 的角度來看,取消並沒有發生。盡管它的調用者仍然被取消,所以 “await” 表達式仍然會引發 CancelledError

如果 something() 被其他方式(即從自身內部)取消,那也會取消 shield()

如果希望完全忽略取消(不推薦),shield() 函數應與 try/except 子句結合使用,如下所示:

try:
    res = await shield(something())
except CancelledError:
    res = None

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

自 3.10 版起已棄用:如果出現棄用警告,則會發出aw不是Future-like 對象並且沒有正在運行的事件循環。

相關用法


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