From 5b6c732213972a9e69c1914c4e84f367cee013a5 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 5 Sep 2023 12:24:07 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20chore(manager.py):=20refactor=20?= =?UTF-8?q?load=5Fsession=20method=20to=20use=20a=20more=20descriptive=20v?= =?UTF-8?q?ariable=20name=20'key'=20instead=20of=20'session=5Fid'=20for=20?= =?UTF-8?q?better=20readability=20=F0=9F=94=A7=20chore(manager.py):=20refa?= =?UTF-8?q?ctor=20generate=5Fkey=20method=20to=20use=20a=20separate=20buil?= =?UTF-8?q?d=5Fkey=20method=20for=20better=20separation=20of=20concerns=20?= =?UTF-8?q?=F0=9F=94=A7=20chore(manager.py):=20refactor=20update=5Fsession?= =?UTF-8?q?=20method=20to=20use=20the=20build=5Fkey=20method=20for=20bette?= =?UTF-8?q?r=20separation=20of=20concerns=20=F0=9F=94=A7=20chore(manager.p?= =?UTF-8?q?y):=20refactor=20clear=5Fsession=20method=20to=20use=20the=20bu?= =?UTF-8?q?ild=5Fkey=20method=20for=20better=20separation=20of=20concerns?= =?UTF-8?q?=20=F0=9F=94=A7=20chore(manager.py):=20add=20type=20hinting=20f?= =?UTF-8?q?or=20cache=5Fmanager=20parameter=20in=20the=20=5F=5Finit=5F=5F?= =?UTF-8?q?=20method=20for=20better=20code=20clarity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../langflow/services/session/manager.py | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/backend/langflow/services/session/manager.py b/src/backend/langflow/services/session/manager.py index 76ac42113..61cc31b39 100644 --- a/src/backend/langflow/services/session/manager.py +++ b/src/backend/langflow/services/session/manager.py @@ -1,19 +1,21 @@ +from typing import TYPE_CHECKING from langflow.interface.run import build_sorted_vertices from langflow.services.base import Service from langflow.services.cache.utils import compute_dict_hash from langflow.services.session.utils import session_id_generator +if TYPE_CHECKING: + from langflow.services.cache.base import BaseCacheManager + class SessionManager(Service): name = "session_manager" def __init__(self, cache_manager): - self.cache_manager = cache_manager - - def load_session(self, session_id, data_graph): - key = self.generate_key(session_id, data_graph) + self.cache_manager: "BaseCacheManager" = cache_manager + def load_session(self, key, data_graph): # Check if the data is cached if key in self.cache_manager: return self.cache_manager.get(key) @@ -24,18 +26,21 @@ class SessionManager(Service): return graph, artifacts + def build_key(self, session_id, data_graph): + json_hash = compute_dict_hash(data_graph) + return f"{session_id}{':' if session_id else ''}{json_hash}" + def generate_key(self, session_id, data_graph): # Hash the JSON and combine it with the session_id to create a unique key - json_hash = compute_dict_hash(data_graph) if session_id is None: # generate a 5 char session_id to concatenate with the json_hash session_id = session_id_generator() - return f"{session_id}{':' if session_id else ''}{json_hash}" + return self.build_key(session_id, data_graph=data_graph) def update_session(self, session_id, data_graph, value): - key = self.generate_key(session_id, data_graph) + key = self.build_key(session_id, data_graph) self.cache_manager.set(key, value) def clear_session(self, session_id, data_graph): - key = self.generate_key(session_id, data_graph) + key = self.build_key(session_id, data_graph) self.cache_manager.delete(key)