neither approach. I would use reqMktData() and build bars in the program. You could use this bluemountaincapital.github.io/Deedle/index.html and keep appending to a dataframe drop older stuff. It lets you do stats easily.
here's a barebones example of getting orderstatus
gist.github.com/audubon/b14eeda1c2cad704b333
You can add calling reqAccountUpdates() and implement updateAccountValue() and updatePortfolio()
they have all been in the right place at the right time: standing in the pit getting all the orders from a filling broker, making markets in options in the 80s/90s, electronic trading ~2000
pick your market. I wouldn't make markets in front month crude oil but would in csos or any rfqs. there are still people in the options pits making markets: grains, meats. on the screen with average software you can't stream quotes on anything but otm without getting picked off
if there's a tax then people would just widen their quotes. if i have make a market 10 at 11 hoping to make 1 but the cost is greater then 1 then i post 10 at 12 instead.
i go with websockets . https://flask-socketio.readthedocs.org/en/latest/
yes, you listen for messages from somewhere and then fire a message in your web app
and https://github.com/mleibman/SlickGrid