Fixed: when receiving a SIGTERM signal, a smooth shutdown procedure should be performed on children processes.

Reverted the change for Python 2
pull/747/head
Smaarn 4 years ago
parent e26f7fc49e
commit 02c3c98cf8

@ -156,7 +156,7 @@ if __name__ == '__main__':
pass pass
def daemon(daemonStatus): def daemon(bazarr_runner = lambda: start_bazarr()):
if os.path.exists(stopfile): if os.path.exists(stopfile):
try: try:
os.remove(stopfile) os.remove(stopfile)
@ -172,21 +172,30 @@ if __name__ == '__main__':
except: except:
print('Unable to delete restart file.') print('Unable to delete restart file.')
else: else:
start_bazarr(daemonStatus) bazarr_runner()
daemonStatus = DaemonStatus() bazarr_runner = lambda: start_bazarr()
def shutdown(): should_stop = lambda: False
# indicates that everything should stop
daemonStatus.stop()
# emulate a Ctrl C command on itself (bypasses the signal thing but, then, emulates the "Ctrl+C break")
os.kill(os.getpid(), signal.SIGINT)
signal.signal(signal.SIGTERM, lambda signal_no, frame: shutdown()) if PY3:
start_bazarr(daemonStatus) daemonStatus = DaemonStatus()
def shutdown():
# indicates that everything should stop
daemonStatus.stop()
# emulate a Ctrl C command on itself (bypasses the signal thing but, then, emulates the "Ctrl+C break")
os.kill(os.getpid(), signal.SIGINT)
signal.signal(signal.SIGTERM, lambda signal_no, frame: shutdown())
should_stop = lambda: daemonStatus.should_stop()
bazarr_runner = lambda: start_bazarr(daemonStatus)
bazarr_runner()
# Keep the script running forever until stop is requested through term or keyboard interrupt # Keep the script running forever until stop is requested through term or keyboard interrupt
while not daemonStatus.should_stop(): while not should_stop():
daemon(daemonStatus) daemon(bazarr_runner)
time.sleep(1) time.sleep(1)

Loading…
Cancel
Save