如何让异步任务忽略 CancelledError
How to make asyncio tasks ignore 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
如果客户端关闭连接,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