diff --git a/run_on_maap.py b/run_on_maap.py index c2014acb5ddc574886a62370f9732c24bfa0c03c..20c0a23a22c8dfc50e8b2ad0a2c1fb44c27de64d 100644 --- a/run_on_maap.py +++ b/run_on_maap.py @@ -35,6 +35,7 @@ import shutil from pathlib import Path from typing import Dict, List import time +import signal import click from maap.maap import MAAP @@ -238,10 +239,15 @@ def main( print(f"\nMonitoring suspended. Press 'r' to resubmit failed jobs, " f"press Ctrl-C to exit, or wait {timeout} seconds to resume.") try: + # wait for user input with timeout + signal.signal(signal.SIGALRM, lambda s, f: (_ for _ in ()).throw(TimeoutError())) + signal.alarm(timeout) answer = input().strip().lower() + signal.alarm(0) if answer == "r": return "resubmit" - time.sleep(timeout) + return "resume" + except TimeoutError: return "resume" except KeyboardInterrupt: return "exit"