Improve server shutdown (#126)

* Cleaned up server shutdown process

* Fix exception on shutdown in Windows
This commit is contained in:
2025-12-30 17:46:53 -06:00
committed by GitHub
parent f9b19587ba
commit e335328530
2 changed files with 71 additions and 68 deletions

View File

@@ -3,7 +3,7 @@ import logging
import threading
from collections import deque
from server import start_server
from server import ZordonServer
logger = logging.getLogger()
@@ -13,6 +13,7 @@ def __setup_buffer_handler():
class BufferingHandler(logging.Handler, QObject):
new_record = pyqtSignal(str)
flushOnClose = True
def __init__(self, capacity=100):
logging.Handler.__init__(self)
@@ -52,12 +53,25 @@ def __show_gui(buffer_handler):
window.buffer_handler = buffer_handler
window.show()
return app.exec()
exit_code = app.exec()
# cleanup: remove and close the GUI logging handler before interpreter shutdown
root_logger = logging.getLogger()
if buffer_handler in root_logger.handlers:
root_logger.removeHandler(buffer_handler)
try:
buffer_handler.close()
except Exception:
# never let logging cleanup throw during shutdown
pass
return exit_code
if __name__ == '__main__':
import sys
local_server_thread = threading.Thread(target=start_server, args=[True], daemon=True)
local_server_thread.start()
server = ZordonServer()
server.start_server()
__show_gui(__setup_buffer_handler())
server.stop_server()
sys.exit()