为什么会这样StreamReader.readexactly文件()导致套接字错误,但不是StreamReader.read文件()?

2024-04-25 20:27:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python编写应用程序,使用Asyncio进行网络连接。我也有类似的代码:

try:
    data = await self._reader.readexactly(10000)

    # Code that uses data
except IncompleteReadError as e:
    data = e.parial
    # More code

当我试着运行这段代码时,它似乎从未真正运行过。如果在第二行设置断点,断点将跳闸,但函数的其余部分将被忽略。你知道吗

最接近错误的是asyncio logger:

Traceback (most recent call last):
  File "c:\python36\Lib\asyncio\selector_events.py", line 724, in _read_ready
    data = self._sock.recv(self.max_size)
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine

data = await self._reader.read(10000)替换第二行似乎可以解决这个问题,但是read()不能解决我的问题,我需要使用readexactly()。那么为什么readexactly()会导致套接字错误而read()不会呢?你知道吗


Tags: 代码inselfasyncio应用程序readdata错误
1条回答
网友
1楼 · 发布于 2024-04-25 20:27:21

两者之间的唯一区别是“read”读取到n个字节,而readexactly读取到n个字节,如果在n个字节之前到达末尾,则会引发不完整的readerror,这可能会导致套接字得到您指出的错误。你知道吗

相关问题 更多 >