如果客户端关闭连接,则asyncio任务会收到CancelledError
并停止请求处理。有没有办法完成所有任务并忽略连接错误?
答案 0 :(得分:1)
您可以使用asyncio.Task.all_tasks()
获取所有正在运行的任务。要完成任务,您应该在其上调用cancel()
并等待任务完成(禁止CancelledError
)。完整的解决方案:
pending = asyncio.Task.all_tasks()
for task in pending:
task.cancel()
with suppress(asyncio.CancelledError):
await task