我正在用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()
不会呢?你知道吗
两者之间的唯一区别是“read”读取到n个字节,而readexactly读取到n个字节,如果在n个字节之前到达末尾,则会引发不完整的readerror,这可能会导致套接字得到您指出的错误。你知道吗
相关问题 更多 >
编程相关推荐