code: def requestMarketData(self, contracts=None, snapshot=False):
          
          if contracts == None:
              contracts = list(self.contracts.values())
          elif not isinstance(contracts, list):
              contracts = [contracts]
  
          for contract in contracts:
              if snapshot:
                  reqType = ""
              else:
                  reqType = dataTypes["GENERIC_TICKS_RTVOLUME"]
                  if contract.m_secType in ("OPT", "FOP"):
                      reqType = dataTypes["GENERIC_TICKS_NONE"]
  
              # get market data for single contract
              # limit is 250 requests/second
              if not self.isMultiContract(contract):
                  try:
                      tickerId = self.tickerId(self.contractString(contract))
                      self.ibConn.reqMktData(tickerId, contract, reqType, snapshot)
                      time.sleep(0.0042)  # 250 = 1.05s
                  except KeyboardInterrupt:
                      sys.exit()
docs: Register to streaming market data updates
          https://www.interactivebrokers.com/en/software/api/apiguide/java/reqmktdata.htm