Fix exit hang on linux

This commit is contained in:
Matthew Stratford 2022-03-19 16:01:37 +00:00
parent f7e71cc32e
commit a838ef7621

View file

@ -2,6 +2,7 @@
import multiprocessing import multiprocessing
import time import time
import sys import sys
import os
from typing import Any from typing import Any
import webbrowser import webbrowser
from setproctitle import setproctitle from setproctitle import setproctitle
@ -31,11 +32,14 @@ def startServer(notifications=False):
printer("Server dead. Exiting.") printer("Server dead. Exiting.")
if notifications: if notifications:
notif("BAPSicle Server Stopped!") notif("BAPSicle Server Stopped!")
sys.exit(0) os._exit(0)
if server and server.is_alive(): if server and server.is_alive():
printer("Terminating server.")
server.terminate() server.terminate()
printer("Waiting to terminate.")
server.join(timeout=20) # If we somehow get stuck stopping BAPSicle let it die. server.join(timeout=20) # If we somehow get stuck stopping BAPSicle let it die.
printer("Terminated")
# Catch the handler being killed externally. # Catch the handler being killed externally.
except Exception as e: except Exception as e:
@ -80,9 +84,10 @@ if __name__ == "__main__":
type(e).__name__, e type(e).__name__, e
) )
) )
sys.exit(1) os._exit(1)
sys.exit(0) os._exit(0)
else: else:
startServer() startServer()
sys.exit(0) printer("Exiting.")
os._exit(0)