code: def data_source():
      rows = []
      modifier = random.random() * random.randint(1, 50)
      for i in range(5):
          rows.append(
              {
                  "name": SECURITIES[
                      random.randint(0, len(SECURITIES) - 1)
                  ],
                  "client": CLIENTS[
                      random.randint(0, len(CLIENTS) - 1)
                  ],
                  "open": (random.random() * 75 + random.randint(0, 9))
                  * modifier,
                  "high": (random.random() * 105 + random.randint(1, 3))
                  * modifier,
                  "low": (random.random() * 85 + random.randint(1, 3))
                  * modifier,
                  "close": (random.random() * 90 + random.randint(1, 3))
                  * modifier,
                  "lastUpdate": datetime.now(),
                  "date": date.today(),
              }
          )
      return rows
  
file_path: perspective/examples/python-tornado-streaming/server.py
imports: import random
  import logging
  import threading
  import tornado.websocket
  import tornado.web
  import tornado.ioloop
  from datetime import date, datetime
  from perspective import Table, PerspectiveManager, PerspectiveTornadoHandler
  import threading
  import concurrent.futures
label_desc: Use image node_id 1 for calling a global function with example usage: data_source() and returns: rows