code: def make_app():
      manager = PerspectiveManager()
  
      thread = threading.Thread(
          target=perspective_thread, args=(manager,)
      )
      thread.daemon = True
      thread.start()
  
      async def websocket_handler(request):
          handler = PerspectiveAIOHTTPHandler(
              manager=manager, request=request
          )
          await handler.run()
  
      app = web.Application()
      app.router.add_get("/websocket", websocket_handler)
      app.router.add_static(
          "/node_modules/@finos",
          "../../node_modules/@finos",
          follow_symlinks=True,
      )
      app.router.add_static(
          "/node_modules",
          "../../node_modules/@finos",
          follow_symlinks=True,
      )
      app.router.add_static("/", "../python-tornado", show_index=True)
      return app
  
file_path: perspective/examples/python-aiohttp/server.py
imports: import asyncio
  import os
  import os.path
  import logging
  import threading
  from aiohttp import web
  from perspective import Table, PerspectiveManager, PerspectiveAIOHTTPHandler
label_desc: Use image node_id 2 for calling a global function with example usage: make_app() and returns: app