Back to home page

EIC code displayed by LXR

 
 

    


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)