from threading import Event import signal import os import traceback from ingestor.ingestor import Ingestor exit_signal = Event() def main(): ingestor = Ingestor() ingestor.prepare_ingestor() ingestor.logger.info("Ingestor prepared. Starting main loop.") while not exit_signal.is_set(): try: ingestor.loop() exit_signal.wait(ingestor.poll_interval) except Exception: print("Exception in main loop. Setting exit_signal flag.") traceback.print_exc() exit_signal.set() ingestor.shutdown() ingestor.logger.info("Main loop exit_signaled.") os._exit(0) def signal_handler(_signum, _frame): print(f"Received signal {_signum}. Setting exit_signal flag.") exit_signal.set() if __name__ == "__main__": signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) signal.signal(signal.SIGHUP, signal_handler) main()