def main(): parser = argparse.ArgumentParser(prog='iconrpcserver_cli.py', usage=f""" ========================== iconrpcserver server ========================== iconrpcserver commands: start : iconrpcserver start stop : iconrpcserver stop -p : rest_proxy port -c : json configure file path -at : amqp target info [IP]:[PORT] -ak : key sharing peer group using queue name. use it if one more peers connect one MQ -ch : loopchain channel ex) loopchain_default -fg : foreground process -tbears : tbears mode """) parser.add_argument('command', type=str, nargs='*', choices=['start', 'stop'], help='rest type [start|stop]') parser.add_argument("-p", type=str, dest=ConfigKey.PORT, default=None, help="rest_proxy port") parser.add_argument("-c", type=str, dest=ConfigKey.CONFIG, default=None, help="json configure file path") parser.add_argument("-at", type=str, dest=ConfigKey.AMQP_TARGET, default=None, help="amqp target info [IP]:[PORT]") parser.add_argument( "-ak", type=str, dest=ConfigKey.AMQP_KEY, default=None, help= "key sharing peer group using queue name. use it if one more peers connect one MQ" ) parser.add_argument("-ch", dest=ConfigKey.CHANNEL, default=None, help="icon score channel") parser.add_argument("-fg", dest='foreground', action='store_true', help="icon rpcserver run foreground") parser.add_argument("-tbears", dest=ConfigKey.TBEARS_MODE, action='store_true', help="tbears mode") args = parser.parse_args() if len(args.command) < 1: parser.print_help() sys.exit(ExitCode.COMMAND_IS_WRONG.value) conf_path = args.config if conf_path is not None: if not IconConfig.valid_conf_path(conf_path): print(f'invalid config file : {conf_path}') sys.exit(ExitCode.COMMAND_IS_WRONG.value) if conf_path is None: conf_path = str() conf = IconConfig(conf_path, default_rpcserver_config) conf.load() conf.update_conf(dict(vars(args))) # set env config redirect_protocol = os.getenv(ConfigKey.REDIRECT_PROTOCOL) if redirect_protocol: conf.update_conf({ConfigKey.REDIRECT_PROTOCOL: redirect_protocol}) else: from iconrpcserver.utils import to_low_camel_case low_camel_case_key = to_low_camel_case(ConfigKey.REDIRECT_PROTOCOL) redirect_protocol = conf.get(low_camel_case_key) if redirect_protocol is not None: conf.update_conf({ConfigKey.REDIRECT_PROTOCOL: redirect_protocol}) Logger.load_config(conf) command = args.command[0] if command == 'start' and len(args.command) == 1: result = start(conf) elif command == 'stop' and len(args.command) == 1: result = stop(conf) else: parser.print_help() result = ExitCode.COMMAND_IS_WRONG.value sys.exit(result)
def main(): # Response server name as loopchain, not gunicorn. gunicorn.SERVER_SOFTWARE = 'loopchain' # Parse arguments. parser = argparse.ArgumentParser() parser.add_argument("-p", type=str, dest=ConfigKey.PORT, default=None, help="rest_proxy port") parser.add_argument("-c", type=str, dest=ConfigKey.CONFIG, default=None, help="json configure file path") parser.add_argument("-at", type=str, dest=ConfigKey.AMQP_TARGET, default=None, help="amqp target info [IP]:[PORT]") parser.add_argument( "-ak", type=str, dest=ConfigKey.AMQP_KEY, default=None, help= "key sharing peer group using queue name. use it if one more peers connect one MQ" ) parser.add_argument("-ch", dest=ConfigKey.CHANNEL, default=None, help="icon score channel") parser.add_argument("-tbears", dest=ConfigKey.TBEARS_MODE, action='store_true', help="tbears mode") args = parser.parse_args() conf_path = args.config if conf_path is not None: if not IconConfig.valid_conf_path(conf_path): print(f'invalid config file : {conf_path}') sys.exit(ExitCode.COMMAND_IS_WRONG.value) if conf_path is None: conf_path = str() conf = IconConfig(conf_path, default_rpcserver_config) conf.load() conf.update_conf(dict(vars(args))) # set env config redirect_protocol = os.getenv(ConfigKey.REDIRECT_PROTOCOL) if redirect_protocol: conf.update_conf({ConfigKey.REDIRECT_PROTOCOL: redirect_protocol}) else: from iconrpcserver.utils import to_low_camel_case low_camel_case_key = to_low_camel_case(ConfigKey.REDIRECT_PROTOCOL) redirect_protocol = conf.get(low_camel_case_key) if redirect_protocol is not None: conf.update_conf({ConfigKey.REDIRECT_PROTOCOL: redirect_protocol}) Logger.load_config(conf) Logger.print_config(conf, ICON_RPCSERVER_CLI) _run_async(_check_rabbitmq(conf[ConfigKey.AMQP_TARGET])) _run_async(_run(conf))