diff --git a/run.py b/run.py index f56e0569d4653c56e5110abca8ffcdb3df8b3ed4..f50c6319f0fbefbc07a4d38557eee932f4050a0f 100755 --- a/run.py +++ b/run.py @@ -26,6 +26,7 @@ import os import sys import signal import logging +import threading from flask import Flask from flask_sqlalchemy import SQLAlchemy @@ -54,7 +55,6 @@ class EngineRunner: logger = None config = None engine = None - lqs = None def __init__(self): @@ -64,12 +64,12 @@ class EngineRunner: self.config = config AuraLogger(self.config) self.logger = logging.getLogger("AuraEngine") - + def run(self): """ Starts Engine Core. - """ + """ from src.engine import Engine self.engine = Engine() @@ -86,15 +86,14 @@ class EngineRunner: """ Shutdown of the engine. Also terminates the Liquidsoap thread. """ + for thread in threading.enumerate(): + self.logger.info(thread.name) + if self.engine: self.engine.terminate() - if self.lqs: - self.lqs.terminate() - self.logger.info("Terminated Liquidsoap") - - self.logger.info("Gracefully terminated Aura Engine! (signum:%s, frame:%s)" % (signum, frame)) - sys.exit(0) + self.logger.info(f"Gracefully terminated Aura Engine! (signum:{signum}, frame:{frame})") + sys.exit(0) @@ -103,7 +102,7 @@ class EngineRunner: # -if __name__ == "__main__": +if __name__ == "__main__": runner = EngineRunner() signal.signal(signal.SIGINT, runner.exit_gracefully) signal.signal(signal.SIGTERM, runner.exit_gracefully) @@ -112,5 +111,5 @@ if __name__ == "__main__": if "--recreate-database" in sys.argv: runner.recreate_db() sys.exit(0) - + runner.run() diff --git a/src/engine.py b/src/engine.py index da4e963e64be68a3bdac97d95fd83010a597b8c7..af8aebedbc9d0550c236fd58ccecefe457cbfc78 100644 --- a/src/engine.py +++ b/src/engine.py @@ -167,10 +167,12 @@ class Engine(): """ Terminates the engine and all related processes. """ + if self.scheduler: self.scheduler.terminate() if self.eci: self.eci.terminate() + # # PLAYER # diff --git a/src/scheduling/api.py b/src/scheduling/api.py index c7e976579c53117dcf2599ba624a0ced9820a067..e566c1aa673c39331cd5eaaa56e2ea834d8aa9fd 100644 --- a/src/scheduling/api.py +++ b/src/scheduling/api.py @@ -304,5 +304,5 @@ class ApiFetcher(threading.Thread): """ Terminates the thread. """ - self.logger.info("Shutting down API fetcher...") + self.logger.info(SU.yellow("[ApiFetcher] Shutting down...")) self.stop_event.set() diff --git a/src/scheduling/programme.py b/src/scheduling/programme.py index 3c29ca1396f0900feb408dc35465e6ffba97a4cb..fb15cdfe30d4bb38467d44efceace20d2c08c35c 100644 --- a/src/scheduling/programme.py +++ b/src/scheduling/programme.py @@ -230,7 +230,7 @@ class ProgrammeService(): """ Called when thread is stopped or a signal to terminate is received. """ - self.logger.info("Shutting down programme service ...") + self.logger.info(SU.yellow("[ProgrammeService] Shutting down...")) if self.api_fetcher: self.api_fetcher.terminate() diff --git a/src/scheduling/scheduler.py b/src/scheduling/scheduler.py index 62cbfd5df3551aae055a9746b68cd2976fa16e79..a9728f72135cd25dab146d399b5f215ec098500b 100644 --- a/src/scheduling/scheduler.py +++ b/src/scheduling/scheduler.py @@ -407,7 +407,7 @@ class AuraScheduler(threading.Thread): """ Called when thread is stopped or a signal to terminate is received. """ - self.logger.info("Shutting down scheduler ...") + self.logger.info(SU.yellow("[Scheduler] Shutting down...")) self.programme.terminate() self.exit_event.set()