gpt4 book ai didi

python-asyncio - 检测客户端何时关闭来自 aiohttp 请求处理程序的连接

转载 作者:行者123 更新时间:2023-12-01 02:01:06 24 4
gpt4 key购买 nike

我有一个长时间运行的请求,在此期间我将收到的数据推送到客户端。但是,该请求需要一些在服务器端创建的资源,我想在客户端断开连接时清理这些资源。我已经浏览了文档,但我似乎无法找到一种方法来检测何时发生这种情况。有任何想法吗?

最佳答案

看文档这不是很明显,但这里的关键是 asyncio 服务器会抛出 CancelledError连接关闭时进入处理程序协程。你可以 catch CancelledError无论您在哪里等待异步操作完成。

使用这个,我在与这样的东西连接后清理:

async def passthrough_data_until_disconnect():
await create_resources()
while True:
try:
await get_next_data_item()
except (concurrent.futures.CancelledError,
aiohttp.ClientDisconnectedError):
# The request has been cancelled, due to a disconnect
await do_cleanup()
# Re-raise the cancellation error so the handler
# task gets cancelled for real
raise
else:
await write_data_to_client_response()

关于python-asyncio - 检测客户端何时关闭来自 aiohttp 请求处理程序的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com