diff --git a/openbb_platform/extensions/websockets/openbb_websockets/client.py b/openbb_platform/extensions/websockets/openbb_websockets/client.py index 3c81970bcc7..fef517c2c47 100644 --- a/openbb_platform/extensions/websockets/openbb_websockets/client.py +++ b/openbb_platform/extensions/websockets/openbb_websockets/client.py @@ -145,7 +145,14 @@ class WebSocketClient: atexit.register(self._atexit) try: - self._setup_database() + loop = asyncio.get_event_loop() + except RuntimeError: + loop = asyncio.new_event_loop() + try: + if loop.is_running(): + loop.create_task(self._setup_database()) + else: + asyncio.run(self._setup_database()) except DatabaseError as e: self.logger.error("Error setting up the SQLite database and table: %s", e) @@ -163,12 +170,12 @@ class WebSocketClient: if os.path.exists(self.results_file): os.remove(self.results_file) - def _setup_database(self): + async def _setup_database(self): """Set up the SQLite database and table.""" # pylint: disable=import-outside-toplevel from openbb_websockets.helpers import setup_database - return setup_database(self.results_path, self.table_name) + return await setup_database(self.results_path, self.table_name) def _log_provider_output(self, output_queue): """Log output from the provider server queue.""" @@ -394,13 +401,15 @@ class WebSocketClient: def results(self): """Clear results stored from the WebSocket stream.""" # pylint: disable=import-outside-toplevel + import asyncio import sqlite3 try: with sqlite3.connect(self.results_path) as conn: conn.execute(f"DELETE FROM {self.table_name}") # noqa conn.commit() - self._setup_database() + + asyncio.create_task(self._setup_database()) self.logger.info( "Results cleared from table %s in %s", self.table_name,