def METHOD_NAME():
    """
    Start the saltnado!
    """
    mod_opts = __opts__.get(__virtualname__, {})
    if "num_processes" not in mod_opts:
        mod_opts["num_processes"] = 1
    if mod_opts["num_processes"] > 1 and mod_opts.get("debug", False) is True:
        raise Exception(
            "Tornado's debug implementation is not compatible with multiprocess. "
            "Either disable debug, or set num_processes to 1."
        )
    # the kwargs for the HTTPServer
    kwargs = {}
    if not mod_opts.get("disable_ssl", False):
        if "ssl_crt" not in mod_opts:
            log.error(
                "Not starting '%s'. Options 'ssl_crt' and "
                "'ssl_key' are required if SSL is not disabled.",
                __name__,
            )
            return None
        # cert is required, key may be optional
        # https://docs.python.org/2/library/ssl.html#ssl.wrap_socket
        ssl_opts = {"certfile": mod_opts["ssl_crt"]}
        if mod_opts.get("ssl_key", False):
            ssl_opts.update({"keyfile": mod_opts["ssl_key"]})
        kwargs["ssl_options"] = ssl_opts
    import tornado.httpserver
    http_server = tornado.httpserver.HTTPServer(get_application(__opts__), **kwargs)
    try:
        http_server.bind(
            mod_opts["port"],
            address=mod_opts.get("address"),
            backlog=mod_opts.get("backlog", 128),
        )
        http_server.METHOD_NAME(mod_opts["num_processes"])
    except Exception:  # pylint: disable=broad-except
        log.error(
            "Rest_tornado unable to bind to port %s", mod_opts["port"], exc_info=True
        )
        raise SystemExit(1)
    try:
        tornado.ioloop.IOLoop.current().METHOD_NAME()
    except KeyboardInterrupt:
        raise SystemExit(0)