У меня есть основная программа, которая определяется следующим образом:
main.py
def main():
try:
registry.start_server()
except:
print("Shutting down the program")
pass
if __name__ == '__main__':
main()
registry.start_server () - это метод в другом модуле, который выглядит следующим образом:
def start_server():
t_server = threading.Thread(target=server.start)
t_server.start()
try:
t_server.join()
except KeyboardInterrupt:
print("Error")
raise ValueError
finally:
fp.close()
server.start - это метод в другом модуле, который выполняет некоторые прослушивания в режиме while (True) .Я не уверен, как остановить всю программу при нажатии Стоп в PyCharm, который является Ctrl + C (Сигнал).Я пытался с Event, но безуспешно.Я получаю к main.py, вызывая исключение, когда сигнал пойман, но это не останавливает всю программу.Он показывает Ожидание отсоединения программы .Единственный способ - использовать SIGKILL.Я не понимаю, где программа продолжает зависать?Я также пытался вызвать sys.exit (0), когда сигнал был пойман, и создать поток как Деймон, но это тоже не помогло.
EDIT Метод True в другом модуле
def start(self, event):
try:
while True:
if event.is_set():
if self.pubsub.channels:
print("It enters here")
message = self.pubsub.get_message(True)
if message:
.
.
.
else:
return