mirror of
https://github.com/blw1138/Zordon.git
synced 2026-02-05 05:36:09 +00:00
Improve server shutdown (#126)
* Cleaned up server shutdown process * Fix exception on shutdown in Windows
This commit is contained in:
22
client.py
22
client.py
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user