diff --git a/reportservice/automatic_run.py b/reportservice/automatic_run.py index 35a8bdb2a8356fa3da1eca650a2f92574d9f4517..93a2454a9fbb3b25bfb376befc8a4fd518413fce 100644 --- a/reportservice/automatic_run.py +++ b/reportservice/automatic_run.py @@ -23,23 +23,17 @@ async def auto_run(): # list of timestamps for the report service runs run_time = cfg['GLOBAL']['run-on'] - # Begin-for-loop to parse the run time-stamps for i, ti in enumerate(run_time): run_time[i] = parser.parse(ti) - # End-for-loop - # Begin-while-loop while True: time_now = datetime.utcnow().replace(tzinfo=tz.tzutc()) sched_time = run_time[tidx] - # Begin-IF no-timezone, use UTC if sched_time.tzinfo is None: sched_time = sched_time.replace(tzinfo=tz.tzutc()) - # End-IF - # Begin-IF a run-timestamp passed, # do automatic-run. if time_now > sched_time: con = zmq.asyncio.Context() @@ -55,19 +49,38 @@ async def auto_run(): run_time[tidx] = sched_time + timedelta(weeks=1) tidx = tidx + 1 if tidx != len(run_time)-1 else 0 - # End-IF # check every 10mins, if there is # a need for an automatic-run. await asyncio.sleep(600) - # End-while-loop -logfile = './cal.log' -logging.basicConfig(filename=logfile, filemode='a+', - level=logging.INFO, - format='%(levelname)-6s: %(asctime)s %(message)s', - datefmt='%Y-%m-%d %H:%M:%S') -loop = asyncio.get_event_loop() -loop.run_until_complete(auto_run()) -loop.close() + + +parser = argparse.ArgumentParser(description='Start the report service') +parser.add_argument('--config-file', type=str, default='./cal_conf.yaml') +parser.add_argument('--log-file', type=str, default='./report.log') +parser.add_argument('--logging', type=str, default="INFO", + choices=['INFO', 'DEBUG', 'ERROR']) +if __name__ == "__main__": + args = vars(parser.parse_args()) + conf_file = args["config_file"] + with open(conf_file, "r") as f: + config = yaml.load(f.read()) + + logfile = args["log_file"] + fmt = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' + + logging.basicConfig(filename=logfile, filemode='a+', + level=getattr(logging, args['logging']), + format='%(levelname)-6s: %(asctime)s %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + logfile = './report.log' + logging.basicConfig(filename=logfile, filemode='a+', + level=logging.INFO, + format='%(levelname)-6s: %(asctime)s %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + + loop = asyncio.get_event_loop() + loop.run_until_complete(auto_run()) + loop.close() diff --git a/reportservice/manual_run.py b/reportservice/manual_run.py index 719b28ac5c86fb39cf366969afe14631b159478c..d5c088b8d5e12d39d352dc1ca1de2609615eca1c 100644 --- a/reportservice/manual_run.py +++ b/reportservice/manual_run.py @@ -7,7 +7,7 @@ import yaml import zmq import zmq.asyncio -logfile = './cal.log' +logfile = './report.log' logging.basicConfig(filename=logfile, filemode='a+', level=logging.INFO, format='%(levelname)-6s: %(asctime)s %(message)s', diff --git a/reportservice/report_service.py b/reportservice/report_service.py index 62e0ef8a490c7df28e947d6c1af7ba057c2e0f5e..1641f93ac50afb83badee3bc168ab65b4e09466c 100644 --- a/reportservice/report_service.py +++ b/reportservice/report_service.py @@ -104,7 +104,7 @@ async def cp_with_conc_lim(f, path, sem): :param f: the main file with it's current path. :param path: the path, where f is copied to. - :param sem: Semaphore is a variable that control + :param sem: Semaphore is a variable that controls access to common resources. """ async with sem: @@ -166,7 +166,6 @@ async def server_runner(config): # reports config file req_cfg = {} - #Begin-IF response dict or list if isinstance(response, dict): req_cfg = response elif isinstance(response, list): @@ -184,23 +183,19 @@ async def server_runner(config): else: logging.error(Errors.REQUEST_MALFORMED.format(response)) continue - #End-IF response dict or list logging.info('Requested Configuration: {}'.format(req_cfg)) - # Begin-asyncio-function(do_action) async def do_action(cfg): logging.info('Run plot production') all_new_files = [] - # Begin-for-loop over instruments for instr_name, instrument in cfg.items(): if instr_name == "GLOBAL": continue - # Begin-for-loop over detectors for det_name, detector in instrument.items(): logging.info('Process detector: {}'.format(det_name)) @@ -239,7 +234,6 @@ async def server_runner(config): det_new_files = {} - # Begin-for-loop over new-figures for f in figures: const = f.split('/')[-1].split('_')[0] fpath = '{}/{}/{}'.format(path, det_name, const) @@ -253,14 +247,11 @@ async def server_runner(config): sem = asyncio.Semaphore(50) all_new_files.append( '{}/{}'.format(fpath, f.split('/')[-1])) - # End-for-loop over new-figures await asyncio.gather(*[cp_with_conc_lim(k, v, sem) for k, v in det_new_files.items()]) logging.info('Figures Copied') - # End-for-loop over detectors - # End-for-loop over instruments asyncio.ensure_future( push_figures(cfg['GLOBAL']['git']['repo-local'], @@ -268,7 +259,6 @@ async def server_runner(config): logging.info('All done') return - # End-asyncio-function(do_action) # TODO delete out-folder @@ -280,7 +270,7 @@ async def server_runner(config): parser = argparse.ArgumentParser(description='Start the report service') parser.add_argument('--config-file', type=str, default='./cal_conf.yaml') -parser.add_argument('--log-file', type=str, default='./cal.log') +parser.add_argument('--log-file', type=str, default='./report.log') parser.add_argument('--logging', type=str, default="INFO", choices=['INFO', 'DEBUG', 'ERROR'])