用法:
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 asyncio.sleep用法及代碼示例
- Python asyncio.BaseTransport.get_extra_info用法及代碼示例
- Python asyncio.run用法及代碼示例
- Python asyncio.wait_for用法及代碼示例
- Python asyncio.create_task用法及代碼示例
- Python asyncio.Task.cancel用法及代碼示例
- Python asyncio.loop.run_in_executor用法及代碼示例
- Python asyncio.Server用法及代碼示例
- Python asyncio.Server.serve_forever用法及代碼示例
- Python asyncio.Event用法及代碼示例
- Python asyncio.gather用法及代碼示例
- Python asyncio.to_thread用法及代碼示例
- Python asyncio.Condition用法及代碼示例
- Python asyncio.SelectorEventLoop用法及代碼示例
- Python asyncio.run_coroutine_threadsafe用法及代碼示例
- Python asyncio.Lock用法及代碼示例
- Python asyncio.Future.add_done_callback用法及代碼示例
- Python asyncio.loop.shutdown_asyncgens用法及代碼示例
- Python asyncio.as_completed用法及代碼示例
- Python asyncio.Semaphore用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 asyncio.shield。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。