gpt4 book ai didi

python-3.x - aiohttp - 套接字传输上的致命读取错误 - TimeoutError

转载 作者:行者123 更新时间:2023-12-02 03:13:15 27 4
gpt4 key购买 nike

我们使用带有 Python3.5 的 aiohttp 将数据发布到 Elasticsearch 中。帖子行如下:

response = await self._http_session.request(method, url,
data = data_fun(), params = params)

通常一切都运行良好,但有时会出现以下错误:

Fatal read error on socket transport
protocol: <aiohttp.parsers.StreamProtocol object at 0x7fde5eb7eeb8>
transport: <_SelectorSocketTransport fd=21 read=polling write=<polling, bufsize=261832>>
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/selector_events.py", line 664, in _read_ready
data = self._sock.recv(self.max_size)
TimeoutError: [Errno 110] Connection timed out

如果它只是抛出异常并继续正常运行就好了。不过,在我们的例子中,这个错误似乎会导致执行 post 请求的整个 asyncio 任务卡住。

我们追踪到错误提升到 https://github.com/python/asyncio/blob/master/asyncio/selector_events.py#L674随后调用 call_exception_handler

这个异常是否可能导致 _https_session 无效/不可用,我们需要创建一个新的?或者我们还有什么可以做的吗?

最佳答案

TimeoutError 应该关闭一个来自 ClientSession 的连接。 session 本身继续工作。

也许您也应该在代码中捕获异常。

抱歉,不看源码就写不下去了。

附言为什么不使用 async with 语句来控制响应生命周期?

喜欢

async with self._http_session.request(method, url,
data = data_fun(), params = params) as response:
...

关于python-3.x - aiohttp - 套接字传输上的致命读取错误 - TimeoutError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741219/

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