diff --git a/pype/ftrack/ftrack_server/event_server_cli.py b/pype/ftrack/ftrack_server/event_server_cli.py index 2e9d95467e..81357da2fa 100644 --- a/pype/ftrack/ftrack_server/event_server_cli.py +++ b/pype/ftrack/ftrack_server/event_server_cli.py @@ -3,6 +3,7 @@ import sys import signal import socket import argparse +import atexit import time from urllib.parse import urlparse @@ -153,6 +154,18 @@ def main_loop(ftrack_url, username, api_key, event_paths): printed_ftrack_error = False printed_mongo_error = False + def on_exit(): + if processor_thread is not None: + processor_thread.stop() + processor_thread.join() + processor_thread = None + + if storer_thread is not None: + storer_thread.stop() + storer_thread.join() + storer_thread = None + + atexit.register(on_exit) # Main loop while True: # Check if accessible Ftrack and Mongo url diff --git a/pype/ftrack/ftrack_server/sub_event_processor.py b/pype/ftrack/ftrack_server/sub_event_processor.py index 20e72beb7c..46d2b861fa 100644 --- a/pype/ftrack/ftrack_server/sub_event_processor.py +++ b/pype/ftrack/ftrack_server/sub_event_processor.py @@ -46,4 +46,4 @@ if __name__ == "__main__": if hasattr(signal, "SIGKILL"): signal.signal(signal.SIGKILL, signal_handler) - main(sys.argv) + sys.exit(main(sys.argv)) diff --git a/pype/ftrack/ftrack_server/sub_event_storer.py b/pype/ftrack/ftrack_server/sub_event_storer.py index dc6fba293b..da67bc38eb 100644 --- a/pype/ftrack/ftrack_server/sub_event_storer.py +++ b/pype/ftrack/ftrack_server/sub_event_storer.py @@ -105,4 +105,4 @@ if __name__ == "__main__": if hasattr(signal, "SIGKILL"): signal.signal(signal.SIGKILL, signal_handler) - main(sys.argv) + sys.exit(main(sys.argv))