Parcourir la source

fix: double split error on redis port and some type hint (#11270)

Signed-off-by: yihong0618 <zouzou0208@gmail.com>
yihong il y a 4 mois
Parent
commit
7b86f8f024
1 fichiers modifiés avec 9 ajouts et 4 suppressions
  1. 9 4
      api/extensions/ext_redis.py

+ 9 - 4
api/extensions/ext_redis.py

@@ -1,3 +1,5 @@
+from typing import Any, Union
+
 import redis
 from redis.cluster import ClusterNode, RedisCluster
 from redis.connection import Connection, SSLConnection
@@ -46,11 +48,11 @@ redis_client = RedisClientWrapper()
 
 def init_app(app: DifyApp):
     global redis_client
-    connection_class = Connection
+    connection_class: type[Union[Connection, SSLConnection]] = Connection
     if dify_config.REDIS_USE_SSL:
         connection_class = SSLConnection
 
-    redis_params = {
+    redis_params: dict[str, Any] = {
         "username": dify_config.REDIS_USERNAME,
         "password": dify_config.REDIS_PASSWORD,
         "db": dify_config.REDIS_DB,
@@ -60,6 +62,7 @@ def init_app(app: DifyApp):
     }
 
     if dify_config.REDIS_USE_SENTINEL:
+        assert dify_config.REDIS_SENTINELS is not None, "REDIS_SENTINELS must be set when REDIS_USE_SENTINEL is True"
         sentinel_hosts = [
             (node.split(":")[0], int(node.split(":")[1])) for node in dify_config.REDIS_SENTINELS.split(",")
         ]
@@ -74,11 +77,13 @@ def init_app(app: DifyApp):
         master = sentinel.master_for(dify_config.REDIS_SENTINEL_SERVICE_NAME, **redis_params)
         redis_client.initialize(master)
     elif dify_config.REDIS_USE_CLUSTERS:
+        assert dify_config.REDIS_CLUSTERS is not None, "REDIS_CLUSTERS must be set when REDIS_USE_CLUSTERS is True"
         nodes = [
-            ClusterNode(host=node.split(":")[0], port=int(node.split.split(":")[1]))
+            ClusterNode(host=node.split(":")[0], port=int(node.split(":")[1]))
             for node in dify_config.REDIS_CLUSTERS.split(",")
         ]
-        redis_client.initialize(RedisCluster(startup_nodes=nodes, password=dify_config.REDIS_CLUSTERS_PASSWORD))
+        # FIXME: mypy error here, try to figure out how to fix it
+        redis_client.initialize(RedisCluster(startup_nodes=nodes, password=dify_config.REDIS_CLUSTERS_PASSWORD))  # type: ignore
     else:
         redis_params.update(
             {