update ws_client more verbosity, better readable time delta

This commit is contained in:
Timothy Pogue 2022-11-02 18:49:11 -06:00
parent 000b0c2198
commit a0965606a5

View File

@ -18,7 +18,6 @@ import orjson
import pandas import pandas
import rapidjson import rapidjson
import websockets import websockets
from dateutil.relativedelta import relativedelta
logger = logging.getLogger("WebSocketClient") logger = logging.getLogger("WebSocketClient")
@ -28,7 +27,7 @@ logger = logging.getLogger("WebSocketClient")
def setup_logging(filename: str): def setup_logging(filename: str):
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[ handlers=[
logging.FileHandler(filename), logging.FileHandler(filename),
@ -75,16 +74,15 @@ def load_config(configfile):
def readable_timedelta(delta): def readable_timedelta(delta):
""" """
Convert a dateutil.relativedelta to a readable format Convert a millisecond delta to a readable format
:param delta: A dateutil.relativedelta :param delta: A delta between two timestamps in milliseconds
:returns: The readable time difference string :returns: The readable time difference string
""" """
attrs = ['years', 'months', 'days', 'hours', 'minutes', 'seconds', 'microseconds'] seconds, milliseconds = divmod(delta, 1000)
return ", ".join([ minutes, seconds = divmod(seconds, 60)
'%d %s' % (getattr(delta, attr), attr if getattr(delta, attr) > 0 else attr[:-1])
for attr in attrs if getattr(delta, attr) return f"{int(minutes)}:{int(seconds)}.{int(milliseconds)}"
])
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
@ -170,8 +168,8 @@ class ClientProtocol:
def _calculate_time_difference(self): def _calculate_time_difference(self):
old_last_received_at = self._LAST_RECEIVED_AT old_last_received_at = self._LAST_RECEIVED_AT
self._LAST_RECEIVED_AT = time.time() * 1e6 self._LAST_RECEIVED_AT = time.time() * 1e3
time_delta = relativedelta(microseconds=(self._LAST_RECEIVED_AT - old_last_received_at)) time_delta = self._LAST_RECEIVED_AT - old_last_received_at
return readable_timedelta(time_delta) return readable_timedelta(time_delta)
@ -272,6 +270,7 @@ async def create_client(
websockets.exceptions.ConnectionClosedError, websockets.exceptions.ConnectionClosedError,
websockets.exceptions.ConnectionClosedOK websockets.exceptions.ConnectionClosedOK
): ):
logger.info("Connection was closed")
# Just keep trying to connect again indefinitely # Just keep trying to connect again indefinitely
await asyncio.sleep(sleep_time) await asyncio.sleep(sleep_time)