class SlAs(): selected_stock = None timetick = None def __init__(self): self.db = Database() self.symbols = self.db.get_symbols(TableName.DAY) self.sectors = self.db.get_sectors(TableName.DAY) self.sm = StockMess() self.app = self.get_home_page() self.sw = StockWhisperer() self.submit = None def get_home_page(self): st.set_page_config(layout="wide") t1 = threading.Thread(target=SlAs.watch, args=(st, )) t1.start() # loop = asyncio.get_event_loop() print('after async') test = st.text_area("websocket", self.timetick) st.write("some text") test = st.text_area("websocket2", self.timetick) @staticmethod def watch(sti): i = 0 while True: print('thread') Utils.countdown(5) i += 1 st.write(str(i)) # test = st.empty() async def watch2(self, test): while True: print('async') Utils.countdown(5) test = str(datetime.now()) # test.markdown( # f""" # <p class="time"> # {str(datetime.now())} # </p> # """, unsafe_allow_html=True) try: await asyncio.sleep(1) except KeyboardInterrupt: print("ending async") exit() test = st.empty() @staticmethod async def time_tick(): timetick = 0 while True: timetick += 1 await asyncio.sleep(1)
class RunData(): selected_stock = None timetick = None time_from = None time_to = None selected = {} action_type = None types = ["sector-stats", "stock-detail", "stocks-stats"] def __init__(self): self.db = Database() self.symbols = self.db.get_symbols(TableName.DAY) self.sectors = self.db.get_sectors(TableName.DAY) self.sm = StockMess() self.app = self.get_home_page() self.sw = StockWhisperer() self.submit = None # self.fig = None # print(self.df) # def load_data(self, option, time_from = "-180d", time_to = None): # df = self.db.load_data( # "p_day", symbols=option, time_from=time_from, time_to = time_to) # df = FinI.add_indicators(sdf.retype(df)) # return df def get_home_page(self): st.set_page_config(layout="wide") asyncio.new_event_loop().run_until_complete(RunData.prepare_test_tasks()) @staticmethod async def prepare_test_tasks(): tasks = [] task = asyncio.ensure_future(RunData.async_test(0.05)) tasks.append(task) task = asyncio.ensure_future(RunData.async_test(0.1)) tasks.append(task) await asyncio.gather(*tasks, return_exceptions=True) @staticmethod async def async_test(sleep): progress_bar = st.sidebar.progress(0) status_text = st.sidebar.empty() last_rows = np.random.randn(1, 1) chart = st.line_chart(last_rows) for i in range(1, 101): new_rows = last_rows[-1, :] + np.random.randn(5, 1).cumsum(axis=0) status_text.text("%i%% Complete" % i) chart.add_rows(new_rows) progress_bar.progress(i) last_rows = new_rows await asyncio.sleep(sleep) progress_bar.empty()