From 955ef77060eba0151da4b30a37919a33eb926c65 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 20 Dec 2023 21:03:17 -0300 Subject: [PATCH] Add Redis URL configuration option --- src/backend/langflow/services/cache/factory.py | 1 + src/backend/langflow/services/cache/service.py | 16 +++++++++------- src/backend/langflow/services/settings/base.py | 1 + 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/backend/langflow/services/cache/factory.py b/src/backend/langflow/services/cache/factory.py index 32f726c6b..145f4e653 100644 --- a/src/backend/langflow/services/cache/factory.py +++ b/src/backend/langflow/services/cache/factory.py @@ -22,6 +22,7 @@ class CacheServiceFactory(ServiceFactory): host=settings_service.settings.REDIS_HOST, port=settings_service.settings.REDIS_PORT, db=settings_service.settings.REDIS_DB, + url=settings_service.settings.REDIS_URL, expiration_time=settings_service.settings.REDIS_CACHE_EXPIRE, ) if redis_cache.is_connected(): diff --git a/src/backend/langflow/services/cache/service.py b/src/backend/langflow/services/cache/service.py index 3ee8d001b..ced345851 100644 --- a/src/backend/langflow/services/cache/service.py +++ b/src/backend/langflow/services/cache/service.py @@ -1,14 +1,13 @@ +import pickle import threading import time from collections import OrderedDict -from langflow.services.base import Service - -from langflow.services.cache.base import BaseCacheService - -import pickle from loguru import logger +from langflow.services.base import Service +from langflow.services.cache.base import BaseCacheService + class InMemoryCache(BaseCacheService, Service): @@ -204,7 +203,7 @@ class RedisCache(BaseCacheService, Service): b = cache["b"] """ - def __init__(self, host="localhost", port=6379, db=0, expiration_time=60 * 60): + def __init__(self, host="localhost", port=6379, db=0, url=None, expiration_time=60 * 60): """ Initialize a new RedisCache instance. @@ -226,7 +225,10 @@ class RedisCache(BaseCacheService, Service): "RedisCache is an experimental feature and may not work as expected." " Please report any issues to our GitHub repository." ) - self._client = redis.StrictRedis(host=host, port=port, db=db) + if url: + self._client = redis.StrictRedis.from_url(url) + else: + self._client = redis.StrictRedis(host=host, port=port, db=db) self.expiration_time = expiration_time # check connection diff --git a/src/backend/langflow/services/settings/base.py b/src/backend/langflow/services/settings/base.py index c74d88a42..f68afb0f4 100644 --- a/src/backend/langflow/services/settings/base.py +++ b/src/backend/langflow/services/settings/base.py @@ -47,6 +47,7 @@ class Settings(BaseSettings): REDIS_HOST: str = "localhost" REDIS_PORT: int = 6379 REDIS_DB: int = 0 + REDIS_URL: Optional[str] = None REDIS_CACHE_EXPIRE: int = 3600 # PLUGIN_DIR: Optional[str] = None