task.cancel()本身并没有完成任务:它只是说
CancelledError应该在其中提出的任务并立即返回。您应该调用它并等待任务实际上被取消(它会引发
CancelledError)。
您也不应压制
CancelledError内部任务。
在尝试显示不同的任务处理方式的地方,请阅读此答案。例如,要取消某些任务并等待其取消,您可以执行以下 *** 作:
from contextlib import suppresstask = ... # remember, task doesn't suppress CancelledError itselftask.cancel() # returns immediately, we should await task raised CancelledError.with suppress(asyncio.CancelledError): await task # or loop.run_until_complete(task) if it happens after event loop stopped# Now when we awaited for CancelledError and handled it, # task is finally over and we can close event loop without warning.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)