class_docstr: PerspectiveTornadoHandler is a drop-in implementation of Perspective.
  
  Use it inside Tornado routing to create a server-side Perspective that is
  ready to receive websocket messages from the front-end `perspective-viewer`.
  Because Tornado implements an event loop, this handler links Perspective
  with `IOLoop.current()` in order to defer expensive operations until the
  next free iteration of the event loop.
  
  The Perspective client and server will automatically keep the Websocket
  alive without timing out.
  
  Examples:
      >>> MANAGER = PerspectiveManager()
      >>> MANAGER.host_table("data_source_one", Table(
      ...     pd.read_csv("superstore.csv")))
      >>> app = tornado.web.Application([
      ...     (r"/", MainHandler),
      ...     (r"/websocket", PerspectiveTornadoHandler, {
      ...         "manager": MANAGER,
      ...         "check_origin": True
      ...     })
      ... ])
code: def __init__(self, *args, **kwargs):
      PerspectiveHandlerBase.__init__(self, **kwargs)
      WebSocketHandler.__init__(self, *args)
  
imports: import asyncio
  from tornado.websocket import WebSocketHandler, WebSocketClosedError
  from .common import PerspectiveHandlerBase
label_desc: Use image node_id 1 to create a new PerspectiveTornadoHandler object from inherited base classes: PerspectiveHandlerBase, WebSocketHandler with example: obj = PerspectiveTornadoHandler()