例子:
with suppress(asyncio.CancelledError):
[await t for t in asyncio.all_tasks(loop=self.loop)
if t is not asyncio.current_task()]
为避免Task was destroyed but it is pending!
警告,我必须在取消后等待任务,但等待它们会导致终端被CancelledError
. 我知道它被取消了,但我不需要看到它。
在这里使用是否contextlib.suppress
会对取消产生负面影响?我可以避免看到取消的错误(或任务被破坏的警告而无需等待)的唯一另一种方法是使用asyncio.wait
而不是开始我的初始任务asyncio.gather
。出于某种原因,wait
似乎抑制了异常。我使用return_when=asyncio.FIRST_EXCEPTION
onwait
和return_exceptions=True
on gather
。但似乎无论我如何设置他们的关键字参数,都会gather
打印异常而wait
没有。