如何使asyncio任务忽略CancelledError

时间:2017-10-12 12:10:21

标签: python-asyncio

如果客户端关闭连接,则asyncio任务会收到CancelledError并停止请求处理。有没有办法完成所有任务并忽略连接错误?

1 个答案:

答案 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