Warning, /iDDS/prompt/bin/run_prompt is written in an unsupported language. File is not indexed.
0001 #!/usr/bin/env python
0002 #
0003 # Licensed under the Apache License, Version 2.0 (the "License");
0004 # You may not use this file except in compliance with the License.
0005 # You may obtain a copy of the License at
0006 # http://www.apache.org/licenses/LICENSE-2.0OA
0007 #
0008 # Authors:
0009 # - Wen Guan, <wen.guan@cern.ch>, 2024 - 2025
0010
0011
0012 """
0013 Run workflow.
0014 """
0015
0016 from __future__ import print_function
0017
0018 import argparse
0019
0020 # import argcomplete
0021 import logging
0022 import os
0023 import sys
0024 import time
0025 import traceback
0026
0027
0028 from idds.common.utils import setup_logging
0029 from idds.common.version import release_version
0030 from idds.prompt.transformer import Transformer
0031
0032 setup_logging(__name__, stream=sys.stdout)
0033
0034
0035 def run_prompt(args):
0036 logging.info(f"run_prompt called with args: {str(args)}")
0037
0038 transformer = Transformer(run_id=args.run_id, workdir=args.workdir, namespace=args.namespace, idle_timeout=args.idle_timeout)
0039 logging.info("Initializing transformer brokers")
0040 ret = transformer.run()
0041 logging.info("Transformer run returned: %s" % str(ret))
0042 return ret
0043
0044
0045 def get_parser():
0046 """
0047 Return the argparse parser.
0048 """
0049 oparser = argparse.ArgumentParser(prog=os.path.basename(sys.argv[0]), add_help=True)
0050
0051 # common items
0052 oparser.add_argument(
0053 "--version", action="version", version="%(prog)s " + release_version
0054 )
0055 oparser.add_argument(
0056 "--verbose",
0057 "-v",
0058 default=False,
0059 action="store_true",
0060 help="Print more verbose output.",
0061 )
0062 oparser.add_argument(
0063 "--run_id", type=int, required=True, help="Run ID for the prompt run."
0064 )
0065 oparser.add_argument(
0066 "--workdir", type=str, required=False, default=None, help="Working directory for the prompt run."
0067 )
0068 oparser.add_argument(
0069 "--namespace", type=str, required=False, default=None, help="Namespace for the prompt run."
0070 )
0071
0072 oparser.add_argument(
0073 "--idle_timeout",
0074 type=int,
0075 default=600,
0076 help="Idle timeout in seconds to stop the transformer if no messages are received.",
0077 )
0078
0079 return oparser
0080
0081
0082 if __name__ == "__main__":
0083 arguments = sys.argv[1:]
0084
0085 oparser = get_parser()
0086 # argcomplete.autocomplete(oparser)
0087
0088 args, unknown = oparser.parse_known_args(arguments)
0089
0090 try:
0091 if args.verbose:
0092 logging.getLogger().setLevel(logging.DEBUG)
0093 start_time = time.time()
0094 logging.info("Starting prompt with arguments: {0}".format(arguments))
0095 logging.info("Starting at: %-0.4f" % start_time)
0096
0097 exit_code = run_prompt(args)
0098
0099 end_time = time.time()
0100 logging.info("Finished at: %-0.4f" % end_time)
0101 logging.info("Completed in %-0.4f sec." % (end_time - start_time))
0102 sys.exit(exit_code)
0103 except Exception as error:
0104 logging.error("Strange error: {0}".format(error))
0105 logging.error(traceback.format_exc())
0106 end_time = time.time()
0107 logging.info("Failed at: %-0.4f" % end_time)
0108 logging.info("Failed in %-0.4f sec." % (end_time - start_time))
0109 sys.exit(-1)