<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def get_server_setting(self, protocol, host='127.0.0.1', port=8000,
                           debug=False, ssl=None, sock=None, workers=1,
                           loop=None, backlog=100, has_log=True):
        '''Helper function used by `run`.'''

        if isinstance(ssl, dict):
            # try common aliaseses
            cert = ssl.get('cert') or ssl.get('certificate')
            key = ssl.get('key') or ssl.get('keyfile')
            if cert is None or key is None:
                raise ValueError('SSLContext or certificate and key required.')
            context = create_default_context(purpose=Purpose.CLIENT_AUTH)
            context.load_cert_chain(cert, keyfile=key)
            ssl = context

        server_settings = {
            'protocol': protocol,
            'request_handler': self.request_handler,
            'log': self.log,
            'netlog': self.netlog,
            'host': host,
            'port': port,
            'sock': sock,
            'ssl': ssl,
            'signal': self.signal,
            'debug': debug,
            'request_timeout': self.request_timeout,
            'request_max_size': self.request_max_size,
            'keep_alive': self.keep_alive,
            'loop': loop,
            'backlog': backlog,
            'has_log': has_log
        }
        for event_name, settings_name, reverse in (
                ('before_server_start', 'before_start', False),
                ('after_server_start', 'after_start', False),
                ('before_server_stop', 'before_stop', True),
                ('after_server_stop', 'after_stop', True),
        ):
            listeners = self.listeners[event_name].copy()
            if reverse:
                listeners.reverse()
            # Prepend mach9 to the arguments when listeners are triggered
            listeners = [partial(listener, self.app) for listener in listeners]
            server_settings[settings_name] = listeners

        if debug:
            self.log.setLevel(logging.DEBUG)

        # Serve
        if host and port:
            proto = 'http'
            if ssl is not None:
                proto = 'https'
            self.log.info('Goin\' Fast @ {}://{}:{}'.format(proto, host, port))
        return server_settings