当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。