Python sys.excepthook работает только один раз

#python #python-3.x #exception #sys

Вопрос:

Я есть Python-сервер, который имеет массовый характер и unexcepting выключая его, перебила или без сохранения данных-это плохая идея.
Я нашел Тома sys.excepthook функцию и добавить его, так что не будет никакого способа, чтобы acidently прерываем программу с помощью CTRL C, но
после первого исключения я использовать CTRL C или любой другой exepction это, как не волнует и predent не
существует.

Код:

 import time
import sys


def my_except_hook(exctype, value, traceback):
    if exctype == KeyboardInterrupt:
        print("WARNING: CTRL C WAS PRESSED!")
        main_loop()
    else:
        sys.__excepthook__(exctype, value, traceback)


def main_loop():
    print("starting!")
    while True:
        print("tick")
        time.sleep(1)


sys.excepthook = my_except_hook
main_loop()
 

Исключение после второго Ctrl C:

 Error in sys.excepthook:
Traceback (most recent call last):
  File "C:somepaththatyoudonthavetoknownexcept_test.py", line 8, in my_except_hook
    main_loop()
  File "C:somepaththatyoudonthavetoknownexcept_test.py", line 17, in main_loop
    time.sleep(1)
KeyboardInterrupt

Original exception was:
Traceback (most recent call last):
  File "C:somepaththatyoudonthavetoknownexcept_test.py", line 21, in <module>
    main_loop()
  File "C:somepaththatyoudonthavetoknownexcept_test.py", line 17, in main_loop
    time.sleep(1)
KeyboardInterrupt

Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl C)
 

Полный выход:

 starting!
tick
tick
WARNING: CTRL C WAS PRESSED!
starting!
tick
tick
Error in sys.excepthook:
Traceback (most recent call last):
  File "C:somepaththatyoudonthavetoknownexcept_test.py", line 8, in my_except_hook
    main_loop()
  File "C:somepaththatyoudonthavetoknownexcept_test.py", line 17, in main_loop
    time.sleep(1)
KeyboardInterrupt

Original exception was:
Traceback (most recent call last):
  File "C:somepaththatyoudonthavetoknownexcept_test.py", line 21, in <module>
    main_loop()
  File "C:somepaththatyoudonthavetoknownexcept_test.py", line 17, in main_loop
    time.sleep(1)
KeyboardInterrupt

Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl C)
 

Комментарии:

1. Что именно вы ищете?

2. Я пытаюсь sys.exeptionhook работает несколько раз.