def killScriptLocal(): # set global flag global STOPPED_BY_INTERRUPT STOPPED_BY_INTERRUPT = True # kill running jobs Util.printOut("killing subprocesses...") for worker in WORKER_THREADS: worker.stop() # wait until all threads are stopped for worker in WORKER_THREADS: worker.join()
for worker in WORKER_THREADS: worker.stop() # wait until all threads are stopped for worker in WORKER_THREADS: worker.join() def killScriptCloud(): # set global flag global STOPPED_BY_INTERRUPT STOPPED_BY_INTERRUPT = True # kill cloud-client, should be done automatically, when the subprocess is aborted def signal_handler_ignore(signum, frame): logging.warn('Received signal %d, ignoring it' % signum) if __name__ == "__main__": # ignore SIGTERM signal.signal(signal.SIGTERM, signal_handler_ignore) try: sys.exit(main()) except KeyboardInterrupt: # this block is reached, when interrupt is thrown before or after a run set execution if config.cloud: killScriptCloud() else: killScriptLocal() Util.printOut("\n\nScript was interrupted by user, some runs may not be done.")