import argparse from datetime import datetime from time import sleep import zmq parser = argparse.ArgumentParser( description='Request dark characterization. Will wait on data transfers to complete first!') # noqa parser.add_argument('--proposal', type=str, help='The proposal number, without leading p, but with leading zeros') # noqa parser.add_argument('--instrument', type=str, choices=["SPB", "MID", "FXE", "SCS", "DETLAB", "SQS", "HED", "CALLAB"], help='The instrument') parser.add_argument('--karabo-ids', type=str, nargs='*', help='A list of karabo-id, default ["all"]', default=['all']) parser.add_argument('--karabo-das', type=str, nargs='*', help='A list of karabo-da to process, default ["all"]', default=['all']) parser.add_argument('--cycle', type=str, help='The facility cycle') parser.add_argument('--run-high', type=str, help='Run number of high gain data as an integer') parser.add_argument('--run-med', type=str, help='Run number of medium gain data as an integer') parser.add_argument('--run-low', type=str, help='Run number of low gain data as an integer') parser.add_argument('--run', type=str, help='Run number as an integer') # default is to use configured reservations parser.add_argument('--bkg', action='store_true', help='Background mode: exit script after requesting dark.') args = vars(parser.parse_args()) con = zmq.Context() socket = con.socket(zmq.REQ) con = socket.connect("tcp://max-exfl016:5555") uuid = str(datetime.now().timestamp().as_integer_ratio()[0]) parm_list = ["dark", uuid, "SASEX", args["instrument"], args["cycle"], args["proposal"], ','.join(args["karabo_ids"]), ','.join(args["karabo_das"])] if "run_high" in args and args["run_high"]: parm_list += ["(\"run-high\", \"{}\")".format(args["run_high"])] if "run_med" in args and args["run_med"]: parm_list += ["(\"run-med\", \"{}\")".format(args["run_med"])] if "run_low" in args and args["run_low"]: parm_list += ["(\"run-low\", \"{}\")".format(args["run_low"])] if "run" in args and args["run"]: parm_list += ["(\"run\", \"{}\")".format(args["run"])] msg = "','".join(parm_list) socket.send("['{}']".format(msg).encode()) resp = socket.recv_multipart()[0] print(resp.decode()) while True: socket.send("['query-rid', '{}']".format(uuid).encode()) resp = socket.recv_multipart()[0] if args["bkg"]: break rl = resp.decode().split("\n") r = ["QUEUE" if "QUEUE" in r else r for r in rl] r = " | ".join(r) print(r + "\r", end=' ', flush=True) sleep(10)