コード例 #1
0
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)
コード例 #2
0
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))