如何使asyncio任务忽略CancelledError

如何使asyncio任务忽略CancelledError

问题描述:

如果客户端关闭连接asyncio任务接收CancelledError并且请求处理停止。有什么办法可以完成所有任务并忽略连接错误?如何使asyncio任务忽略CancelledError

您可以使用asyncio.Task.all_tasks()获取所有正在运行的任务。要完成任务,您应该调用cancel()并等待任务完成(抑制CancelledError)。完整的解决方案:

pending = asyncio.Task.all_tasks() 
for task in pending: 
    task.cancel() 
    with suppress(asyncio.CancelledError): 
     await task