code: def make_app():
      manager = PerspectiveManager()
  
      # Run Perspective in its own thread with its own IOLoop
      thread = threading.Thread(
          target=perspective_thread, args=(manager,)
      )
      thread.daemon = True
      thread.start()
  
      return tornado.web.Application(
          [
              (
                  r"/websocket",
                  PerspectiveTornadoHandler,
                  {"manager": manager, "check_origin": True},
              ),
              (
                  r"/node_modules/(.*)",
                  tornado.web.StaticFileHandler,
                  {"path": "../../../node_modules/@finos/"},
              ),
              (
                  r"/(.*)",
                  tornado.web.StaticFileHandler,
                  {
                      "path": os.path.join(here, "..", "dist"),
                      "default_filename": "index.html",
                  },
              ),
          ],
          websocket_ping_interval=15,
      )
  
file_path: perspective/examples/workspace-editing-python/src/server.py
imports: import os
  import os.path
  import logging
  import tornado.websocket
  import tornado.web
  import tornado.ioloop
  import threading
  from perspective import Table, PerspectiveManager, PerspectiveTornadoHandler
label_desc: Use image node_id 2 for calling a global function with example usage: make_app() and returns: tornado