From c68b9e39c784b6d3c37ccc0ae1c9eeb9fd935e7c Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 5 Sep 2023 11:55:19 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20feat(session):=20add=20session?= =?UTF-8?q?=5Fid=5Fgenerator=20utility=20function=20to=20generate=20a=20ra?= =?UTF-8?q?ndom=20session=20ID=20=F0=9F=90=9B=20fix(session):=20generate?= =?UTF-8?q?=20a=205=20character=20session=20ID=20if=20session=5Fid=20is=20?= =?UTF-8?q?None=20to=20ensure=20a=20unique=20key=20is=20created?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/services/session/manager.py | 5 +++++ src/backend/langflow/services/session/utils.py | 8 ++++++++ 2 files changed, 13 insertions(+) create mode 100644 src/backend/langflow/services/session/utils.py diff --git a/src/backend/langflow/services/session/manager.py b/src/backend/langflow/services/session/manager.py index a131d15d1..76ac42113 100644 --- a/src/backend/langflow/services/session/manager.py +++ b/src/backend/langflow/services/session/manager.py @@ -2,6 +2,8 @@ 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 + class SessionManager(Service): name = "session_manager" @@ -25,6 +27,9 @@ class SessionManager(Service): 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}" def update_session(self, session_id, data_graph, value): diff --git a/src/backend/langflow/services/session/utils.py b/src/backend/langflow/services/session/utils.py new file mode 100644 index 000000000..374d85540 --- /dev/null +++ b/src/backend/langflow/services/session/utils.py @@ -0,0 +1,8 @@ +import random +import string + + +def session_id_generator(size=6): + return "".join( + random.SystemRandom().choices(string.ascii_uppercase + string.digits, k=size) + )