def main(): parser = argparse.ArgumentParser() parser.add_argument('config_file') parser.add_argument('--debug', action='store_true') parser.add_argument('--logfile') parser.add_argument('--purge', action='store_true') parser.add_argument('--loadgen', action='store_true') parser.add_argument('--sessionid') parser.add_argument('--httpserver', action='store_true') args = parser.parse_args() if args.logfile: fh = FileHandler(args.logfile) formatter = logging.Formatter(FORMAT) fh.setFormatter(formatter) logger.addHandler(fh) if args.debug: logger.setLevel(logging.DEBUG) config = yaml.load(open(args.config_file)) sessionmaker = config_to_db_session(config, Base) stomp_endpoint = config['stomp_endpoint'] stomp_login = config['stomp_login'] stomp_password = config['stomp_password'] stomp_config = StompConfig(stomp_endpoint, login=stomp_login, passcode=stomp_password) if args.purge: purge_completed_jobs(sessionmaker()) return elif args.loadgen: if not args.sessionid: raise ValueError('parameter sessionid is required for load generator') jm = StompSync(stomp_config) jm.connect() generate_load(jm, args.sessionid) jm.disconnect() return elif args.httpserver: from jobmanager.www import app app.config['DB'] = sessionmaker app.config['params'] = config app.run() return jm = JobManager(sessionmaker, config=stomp_config) jm.run() l = task.LoopingCall(jm.run_periodic_checks) l.start(PERIODIC_CHECK_INTERVAL) reactor.run()