|
@@ -21,9 +21,12 @@ class Settings(BaseSettings):
|
|
|
DB_PORT: int = os.getenv("DB_PORT")
|
|
DB_PORT: int = os.getenv("DB_PORT")
|
|
|
DB_NAME: str = os.getenv("DB_NAME")
|
|
DB_NAME: str = os.getenv("DB_NAME")
|
|
|
|
|
|
|
|
- # redis配置
|
|
|
|
|
- # REDIS_URL: str = "redis://:Alien123456@172.31.154.180:30002/0"
|
|
|
|
|
- REDIS_URL: str = os.getenv("REDIS_URL")
|
|
|
|
|
|
|
+ # Redis Sentinel 高可用配置
|
|
|
|
|
+ # 例: REDIS_SENTINELS=192.168.2.251:36379,192.168.2.252:36379,192.168.2.253:36379
|
|
|
|
|
+ REDIS_SENTINELS: str = os.getenv("REDIS_SENTINELS", "")
|
|
|
|
|
+ REDIS_MASTER_NAME: str = os.getenv("REDIS_MASTER_NAME", "mymaster")
|
|
|
|
|
+ REDIS_PASSWORD: str = os.getenv("REDIS_PASSWORD", "")
|
|
|
|
|
+ REDIS_DB: int = int(os.getenv("REDIS_DB", "0"))
|
|
|
|
|
|
|
|
# 下游服务地址
|
|
# 下游服务地址
|
|
|
STORE_BASE_URL: str = os.getenv("STORE_BASE_URL") # alien_store 服务地址
|
|
STORE_BASE_URL: str = os.getenv("STORE_BASE_URL") # alien_store 服务地址
|
|
@@ -40,6 +43,24 @@ class Settings(BaseSettings):
|
|
|
def SQLALCHEMY_DATABASE_URI(self) -> str:
|
|
def SQLALCHEMY_DATABASE_URI(self) -> str:
|
|
|
return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}"
|
|
return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}"
|
|
|
|
|
|
|
|
|
|
+ @property
|
|
|
|
|
+ def REDIS_SENTINEL_NODES(self) -> List[tuple[str, int]]:
|
|
|
|
|
+ nodes: List[tuple[str, int]] = []
|
|
|
|
|
+ for item in self.REDIS_SENTINELS.split(","):
|
|
|
|
|
+ entry = item.strip()
|
|
|
|
|
+ if not entry:
|
|
|
|
|
+ continue
|
|
|
|
|
+ host, port = entry.split(":")
|
|
|
|
|
+ nodes.append((host.strip(), int(port.strip())))
|
|
|
|
|
+ return nodes
|
|
|
|
|
+
|
|
|
|
|
+ @property
|
|
|
|
|
+ def REDIS_SENTINEL_URL(self) -> str:
|
|
|
|
|
+ # Celery sentinel transport 需要 "sentinel://host:port;sentinel://host:port"
|
|
|
|
|
+ return ";".join(
|
|
|
|
|
+ f"sentinel://{host}:{port}" for host, port in self.REDIS_SENTINEL_NODES
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
model_config = SettingsConfigDict(
|
|
model_config = SettingsConfigDict(
|
|
|
case_sensitive=True,
|
|
case_sensitive=True,
|
|
|
env_file=".env",
|
|
env_file=".env",
|