From 9118ae926898c875962bb360e4e56ed9c443fbfb Mon Sep 17 00:00:00 2001 From: Untone Date: Wed, 21 Feb 2024 13:44:36 +0300 Subject: [PATCH] logger-query-id --- services/db.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/services/db.py b/services/db.py index 492882a0..9c6d0945 100644 --- a/services/db.py +++ b/services/db.py @@ -25,15 +25,21 @@ Base = declarative_base() # Перехватчики для журнала запросов SQLAlchemy @event.listens_for(Engine, 'before_cursor_execute') def before_cursor_execute(conn, cursor, statement, parameters, context, executemany): - conn.info.setdefault(f'query_start_time:{statement}', time.time()) + query_id = id(cursor) # Уникальный идентификатор запроса + conn.info.setdefault(f'query_start_time:{query_id}', time.time()) @event.listens_for(Engine, 'after_cursor_execute') def after_cursor_execute(conn, cursor, statement, parameters, context, executemany): - total = time.time() - conn.info[f'query_start_time:{statement}'] - del conn.info[f'query_start_time:{statement}'] - stars = '*' * math.floor(total*1000) - if stars: - logger.debug(f'\n{statement}\n {stars} {total*1000} s\n') + query_id = id(cursor) # Уникальный идентификатор запроса + if f'query_start_time:{query_id}' in conn.info: + total = time.time() - conn.info.get(f'query_start_time:{query_id}', time.time()) + del conn.info[f'query_start_time:{query_id}'] + stars = '*' * math.floor(total*1000) + if stars: + logger.debug(f'\n{statement}\n {stars} {total*1000} s\n') + else: + logger.error(f"Не удалось найти информацию о времени начала запроса с идентификатором {query_id}.") + def local_session(src=""):