Ich schreibe Anwendung in Python mit Asyncio für die Vernetzung. Ich habe Code ähnlich auch:Warum verursacht StreamReader.readexactly() einen Socket-Fehler, aber nicht StreamReader.read()?
try:
data = await self._reader.readexactly(10000)
# Code that uses data
except IncompleteReadError as e:
data = e.parial
# More code
Wenn ich versuche, diesen Code auszuführen, scheint es nie tatsächlich zu laufen. Wenn ich einen Haltepunkt in der zweiten Zeile festlege, wird der Haltepunkt ausgelöst, aber der Rest der Funktion wird ignoriert.
Das nächste, was ich auf einen Fehler bekommen, ist dies vom 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
Ersetzen der zweiten Zeile mit data = await self._reader.read(10000)
dieses Problem zu lösen scheint, aber read()
nicht mein Problem zu lösen, muss ich Verwenden Sie readexactly()
. Warum verursacht readexactly()
einen Socket-Fehler, aber read()
nicht?
Warum wird dann nicht der Ausnahmeblock ausgeführt? Die Funktion endet nur vollständig in dieser Zeile. – ILikePizza555
weil Sie nur "IncompleteReadError" abfangen, versuchen Sie das zu "Exception" zu ändern und sehen Sie, ob der except-Block ausgeführt wird und welcher Exception-Typ ausgelöst wird – ddor254