code: def run_app(app: Union[Application, Awaitable[Application]], *,
              host: Optional[str]=None,
              port: Optional[int]=None,
              path: Optional[str]=None,
              sock: Optional[socket.socket]=None,
              shutdown_timeout: float=60.0,
              ssl_context: Optional[SSLContext]=None,
              print: Optional[Callable[..., None]]=print,
              backlog: int=128,
              access_log_class: Type[AbstractAccessLogger]=AccessLogger,
              access_log_format: str=AccessLogger.LOG_FORMAT,
              access_log: Optional[logging.Logger]=access_logger,
              handle_signals: bool=True,
              reuse_address: Optional[bool]=None,
              reuse_port: Optional[bool]=None) -> None:
      
      loop = asyncio.get_event_loop()
  
      # Configure if and only if in debugging mode and using the default logger
      if loop.get_debug() and access_log and access_log.name == 'aiohttp.access':
          if access_log.level == logging.NOTSET:
              access_log.setLevel(logging.DEBUG)
          if not access_log.hasHandlers():
              access_log.addHandler(logging.StreamHandler())
  
      try:
          loop.run_until_complete(_run_app(app,
                                           host=host,
                                           port=port,
                                           path=path,
                                           sock=sock,
                                           shutdown_timeout=shutdown_timeout,
                                           ssl_context=ssl_context,
                                           print=print,
                                           backlog=backlog,
                                           access_log_class=access_log_class,
                                           access_log_format=access_log_format,
                                           access_log=access_log,
                                           handle_signals=handle_signals,
                                           reuse_address=reuse_address,
                                           reuse_port=reuse_port))
      except (GracefulExit, KeyboardInterrupt):  # pragma: no cover
          pass
      finally:
          _cancel_all_tasks(loop)
          if sys.version_info >= (3, 6):  # don't use PY_36 to pass mypy
              loop.run_until_complete(loop.shutdown_asyncgens())
          loop.close()
docs: Run an app locally