Как сделать sys.exit () с asyncio Python 3.8 + / Windows 10+ без исключений? - PullRequest
2 голосов
/ 05 февраля 2020

Я хочу написать такую ​​программу asyncio, которая существует для некоторых проблем. Я должен работать, но он генерирует ужасный вывод вместо чистого выхода. Как сделать sys.exit() без таких безобразных исключений?

Вот код:

import asyncio
import sys


async def main():
    sys.exit()


if __name__ == '__main__':
    asyncio.run(main(), debug=True)

Результат:

C:\root\Python38\python.exe C:/Users/x/PycharmProjects/dptr-monitoring-v2/sandbox/python/s06_asyncio/s02_exit.py
Cancelling an overlapped future failed
future: <_OverlappedFuture pending overlapped=<pending, 0x1dba46c58b0> cb=[BaseProactorEventLoop._loop_self_reading()] created at C:\root\Python38\lib\asyncio\windows_events.py:461>
source_traceback: Object created at (most recent call last):
  File "C:/Users/x/PycharmProjects/dptr-monitoring-v2/sandbox/python/s06_asyncio/s02_exit.py", line 10, in <module>
    asyncio.run(main(), debug=True)
  File "C:\root\Python38\lib\asyncio\runners.py", line 47, in run
    loop.run_until_complete(loop.shutdown_asyncgens())
  File "C:\root\Python38\lib\asyncio\base_events.py", line 599, in run_until_complete
    self.run_forever()
  File "C:\root\Python38\lib\asyncio\windows_events.py", line 316, in run_forever
    super().run_forever()
  File "C:\root\Python38\lib\asyncio\base_events.py", line 567, in run_forever
    self._run_once()
  File "C:\root\Python38\lib\asyncio\base_events.py", line 1847, in _run_once
    handle._run()
  File "C:\root\Python38\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "C:\root\Python38\lib\asyncio\proactor_events.py", line 769, in _loop_self_reading
    f = self._proactor.recv(self._ssock, 4096)
  File "C:\root\Python38\lib\asyncio\windows_events.py", line 461, in recv
    return self._register(ov, conn, finish_recv)
Traceback (most recent call last):
  File "C:\root\Python38\lib\asyncio\runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "C:\root\Python38\lib\asyncio\base_events.py", line 599, in run_until_complete
    self.run_forever()
  File "C:\root\Python38\lib\asyncio\windows_events.py", line 316, in run_forever
    super().run_forever()
  File "C:\root\Python38\lib\asyncio\base_events.py", line 567, in run_forever
    self._run_once()
  File "C:\root\Python38\lib\asyncio\base_events.py", line 1847, in _run_once
    handle._run()
  File "C:\root\Python38\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "C:/Users/x/PycharmProjects/dptr-monitoring-v2/sandbox/python/s06_asyncio/s02_exit.py", line 6, in main
    exit()
  File "C:\root\Python38\lib\_sitebuiltins.py", line 26, in __call__
    raise SystemExit(code)
SystemExit: None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\root\Python38\lib\asyncio\windows_events.py", line 66, in _cancel_overlapped
    self._ov.cancel()
OSError: [WinError 6] Nieprawidłowe dojście

Process finished with exit code 0

Должно быть:

Process finished with exit code 0

...