diff --git a/backend/api/main.py b/backend/api/main.py index 89248c0..4d20391 100644 --- a/backend/api/main.py +++ b/backend/api/main.py @@ -102,16 +102,23 @@ logger = logging.getLogger(__name__) logger.info(f"日志系统已初始化,日志文件: {log_file}") logger.info(f"日志级别: {os.getenv('LOG_LEVEL', 'INFO')}") -# 检查 aioredis 是否可用 +# 检查 redis-py 是否可用(redis-py 4.2+ 同时支持同步和异步,可替代aioredis) try: - import aioredis - logger.info(f"✓ aioredis 已安装 (版本: {aioredis.__version__ if hasattr(aioredis, '__version__') else '未知'})") + import redis + # 检查是否是 redis-py 4.2+(支持异步) + if hasattr(redis, 'asyncio'): + logger.info(f"✓ redis-py 已安装 (版本: {redis.__version__ if hasattr(redis, '__version__') else '未知'}),支持同步和异步客户端") + logger.info(f" - redis.Redis: 同步客户端(用于config_manager)") + logger.info(f" - redis.asyncio.Redis: 异步客户端(用于trading_system,可替代aioredis)") + else: + logger.warning("⚠ redis-py 版本可能过低,建议升级到 4.2+ 以获得异步支持") except ImportError as e: import sys - logger.warning("⚠ aioredis 未安装,Redis/Valkey 缓存将不可用") + logger.warning("⚠ redis-py 未安装,Redis/Valkey 缓存将不可用") logger.warning(f" Python 路径: {sys.executable}") logger.warning(f" 导入错误: {e}") - logger.warning(f" 提示: 请运行 'pip install aioredis==2.0.1' 安装 aioredis") + logger.warning(f" 提示: 请运行 'pip install redis>=4.2.0' 安装 redis-py") + logger.warning(f" 注意: redis-py 4.2+ 同时支持同步和异步,无需安装 aioredis") logger.warning(f" 或者运行 'pip install -r backend/requirements.txt' 安装所有依赖") app = FastAPI( diff --git a/backend/config_manager.py b/backend/config_manager.py index 2d6aa7d..9d8a9e1 100644 --- a/backend/config_manager.py +++ b/backend/config_manager.py @@ -223,7 +223,6 @@ class ConfigManager: self._redis_client.ping() except: self._redis_connected = False - return # 从数据库加载配置(仅在Redis不可用或Redis中没有数据时) configs = TradingConfig.get_all() @@ -245,11 +244,21 @@ class ConfigManager: def get(self, key, default=None): """获取配置值""" # 1. 优先从Redis缓存读取(最新) +<<<<<<< Current (Your changes) redis_value = self._get_from_redis(key) if redis_value is not None: # 同时更新本地缓存 self._cache[key] = redis_value return redis_value +======= + # 注意:只在Redis连接正常时尝试读取,避免频繁连接失败 + if self._redis_connected and self._redis_client: + redis_value = self._get_from_redis(key) + if redis_value is not None: + # 同时更新本地缓存 + self._cache[key] = redis_value + return redis_value +>>>>>>> Incoming (Background Agent changes) # 2. 从本地缓存读取 if key in self._cache: diff --git a/trading_system/config.py b/trading_system/config.py index 11e4c13..5b5b18d 100644 --- a/trading_system/config.py +++ b/trading_system/config.py @@ -168,6 +168,10 @@ def _get_trading_config(): """获取交易配置(支持动态重载,优先从Redis读取最新值)""" if _config_manager: # 从Redis重新加载配置(轻量级,只从Redis读取,不查数据库) +<<<<<<< Current (Your changes) +======= + # 注意:如果Redis不可用或没有数据,reload_from_redis()会保持现有缓存,不会触发数据库加载 +>>>>>>> Incoming (Background Agent changes) _config_manager.reload_from_redis() return _config_manager.get_trading_config() # 回退到默认配置