From deb056df328d54026e674120cac2a9d45ff63259 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 16 Jun 2023 15:07:39 -0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(chat.py):=20use=20LRUCache=20f?= =?UTF-8?q?rom=20cachetools=20to=20limit=20the=20size=20of=20flow=5Fdata?= =?UTF-8?q?=5Fstore=20The=20cachetools=20package=20is=20added=20as=20a=20d?= =?UTF-8?q?ependency=20to=20improve=20caching.=20In=20chat.py,=20a=20Value?= =?UTF-8?q?Error=20is=20raised=20if=20no=20ID=20is=20provided=20in=20init?= =?UTF-8?q?=5Fbuild=20to=20prevent=20errors.=20The=20flow=5Fdata=5Fstore?= =?UTF-8?q?=20dictionary=20is=20replaced=20with=20an=20LRUCache=20from=20c?= =?UTF-8?q?achetools=20to=20limit=20the=20size=20of=20the=20cache=20to=201?= =?UTF-8?q?0=20items.=20This=20improves=20performance=20by=20reducing=20th?= =?UTF-8?q?e=20memory=20usage=20of=20the=20application.=20=F0=9F=93=A6=20c?= =?UTF-8?q?hore(pyproject.toml):=20add=20cachetools=20dependency=20to=20im?= =?UTF-8?q?prove=20caching=20=F0=9F=90=9B=20fix(chat.py):=20raise=20ValueE?= =?UTF-8?q?rror=20if=20no=20ID=20is=20provided=20in=20init=5Fbuild?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- poetry.lock | 2 +- pyproject.toml | 1 + src/backend/langflow/api/v1/chat.py | 6 ++++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 829384794..550d102eb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6416,4 +6416,4 @@ deploy = ["langchain-serve"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "e3a7355edeae80f8330e6e71fd5acbc446fd287397cf7d8d027ab6b450569f28" +content-hash = "4ed469589797b717f4b878f219dfe7c83d21d45d6947617693b6d2feb55cee3a" diff --git a/pyproject.toml b/pyproject.toml index a59859d0b..9ae98e91d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,6 +61,7 @@ faiss-cpu = "^1.7.4" anthropic = "^0.2.9" orjson = "^3.9.0" multiprocess = "^0.70.14" +cachetools = "^5.3.1" [tool.poetry.group.dev.dependencies] diff --git a/src/backend/langflow/api/v1/chat.py b/src/backend/langflow/api/v1/chat.py index 5943f6f78..0eae10c64 100644 --- a/src/backend/langflow/api/v1/chat.py +++ b/src/backend/langflow/api/v1/chat.py @@ -12,10 +12,11 @@ from langflow.api.v1.schemas import BuiltResponse, InitResponse from langflow.chat.manager import ChatManager from langflow.graph.graph.base import Graph from langflow.utils.logger import logger +from cachetools import LRUCache router = APIRouter(tags=["Chat"]) chat_manager = ChatManager() -flow_data_store = {} +flow_data_store = LRUCache(maxsize=10) @router.websocket("/chat/{client_id}") @@ -38,7 +39,8 @@ async def init_build(graph_data: dict): try: flow_id = graph_data.get("id") - + if flow_id is None: + raise ValueError("No ID provided") flow_data_store[flow_id] = graph_data return InitResponse(flowId=flow_id)